[ https://issues.apache.org/jira/browse/GROOVY-8327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Isaac Dooley updated GROOVY-8327: --------------------------------- Description: The parser in 2.5, 2.6, 3.0 gives a MultipleCompilationErrorsException on code that compiled successfully in 2.4 {code:java|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:java|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. was: The parser in 2.6.0-alpha-1 gives a MultipleCompilationErrorsException on code that compiled successfully 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. > Parser regression. Can't access 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, 3.0.0-alpha-3, 2.5.2 > Environment: groovc command line on linux > Reporter: Isaac Dooley > Priority: Major > > The parser in 2.5, 2.6, 3.0 gives a MultipleCompilationErrorsException on > code that compiled successfully in 2.4 > {code:java|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:java|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 (v7.6.3#76005)