You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Isaac Dooley (JIRA)" <ji...@apache.org> on 2017/09/20 18:00:00 UTC

[jira] [Created] (GROOVY-8327) Parser regression. Can't accesss static instance method before class is constructed

Isaac Dooley created GROOVY-8327:
------------------------------------

             Summary: Parser regression. Can't accesss static instance method before class is constructed
                 Key: GROOVY-8327
                 URL: https://issues.apache.org/jira/browse/GROOVY-8327
             Project: Groovy
          Issue Type: Bug
    Affects Versions: 2.6.0-alpha-1
         Environment: groovc command line on linux
            Reporter: Isaac Dooley


The parser in 2.6.0-alpha-1 gives a MultipleCompilationErrorsException on code that was compiled in 2.4.12. 

{code:title=Code that fails to compile on 2.6.0-alpha-1}
class A {
    static String g() { }
    A() {
        this({g()}) // It is ok to create a closure that calls g() in a constructor, but not if it is being passed into this().
    }
    A(a) { }
}
{code}

{code:title=compilation error message}
$ groovyc test.groovy  
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
test.groovy: 4: Can't access instance method 'g' before the class is constructed
 @ line 4, column 15.
           this({g()}) // It is ok to create a closure that calls g() in a constructor, but not if it is being passed into this().
                 ^

1 error
{code}

My opinion is that groovy should allow users to call a static method inside a constructor before the instance has been fully constructed, but I'm not aware of the details of why this is disallowed in 2.6.0-alpha-1.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)