You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Robert Elliot (JIRA)" <ji...@apache.org> on 2015/07/03 01:39:04 UTC

[jira] [Created] (GROOVY-7490) CompileStatic confuses statically importing an instance and statically importing a method

Robert Elliot created GROOVY-7490:
-------------------------------------

             Summary: CompileStatic confuses statically importing an instance and statically importing a method
                 Key: GROOVY-7490
                 URL: https://issues.apache.org/jira/browse/GROOVY-7490
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation
    Affects Versions: 2.4.3
            Reporter: Robert Elliot
            Assignee: Cédric Champeau


When statically importing a field and immediately calling a call() method on it, the static compiler gets confused and looks for a static method with the name of the field that takes the arguments passed to the call() method.

See below - comment out @CompileStatic and it will run as expected.

{code:java}
import groovy.transform.CompileStatic

class WithCall {

    static final WithCall staticallyImported = new WithCall()

    String call(String input) {
        return input;
    }
}

class CompileStaticImport {

    @CompileStatic
    public static void main(String[] args) {
        assert WithCall.staticallyImported("to print") == "to print"
    }
}
{code}

Error:(16, 16) Groovyc: [Static type checking] - Cannot find matching method WithCall#staticallyImported(java.lang.String). Please check if the declared type is right and if the method exists.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)