[ https://issues.apache.org/jira/browse/GROOVY-6629?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16348088#comment-16348088 ]
Paul King edited comment on GROOVY-6629 at 2/1/18 6:37 AM: ----------------------------------------------------------- Here is the comment about this message from {{StaticCompilationVisitor#checkForConstructorWithCSButClassWithout}}: {code} /** * If we are in a constructor, that is static compiled, but in a class, that * is not, it may happen that init code from object initializers, fields * or properties is added into the constructor code. The backend assumes * a purely static constructor, so it may fail if it encounters dynamic * code here. Thus we make this kind of code fail */ {code} And a simpler example to trigger the error: {code} class TestBroken { private myField @groovy.transform.CompileStatic TestBroken() {} } {code} was (Author: paulk): Here is the comment about this message from {{StaticCompilationVisitor#checkForConstructorWithCSButClassWithout}}: {code} /** * If we are in a constructor, that is static compiled, but in a class, that * is not, it may happen that init code from object initializers, fields * or properties is added into the constructor code. The backend assumes * a purely static constructor, so it may fail if it encounters dynamic * code here. Thus we make this kind of code fail */ {code} > static compilation fails with obscure message when only constructor is > annotated > -------------------------------------------------------------------------------- > > Key: GROOVY-6629 > URL: https://issues.apache.org/jira/browse/GROOVY-6629 > Project: Groovy > Issue Type: Bug > Components: Static compilation > Affects Versions: 2.2.2, 2.3.0, 2.4.0-rc-1 > Reporter: Dimitar Dimitrov > Priority: Major > > {code} > class TestBroken { > private final InetAddress bindTo > @groovy.transform.CompileStatic > TestBroken(InetAddress bindTo = null) { > this.bindTo = bindTo ?: InetAddress.getByName("localhost") > } > } > {code} > Error:(12, 5) Groovyc: [Static type checking] - Cannot statically compile > constructor implicitly including non static elements from object > initializers, properties or fields. > {code} > @groovy.transform.CompileStatic > class TestWorking { > private final InetAddress bindTo > TestWorking(InetAddress bindTo = null) { > this.bindTo = bindTo ?: InetAddress.getByName("localhost") > } > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)