You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2020/01/19 19:13:00 UTC
[jira] [Comment Edited] (GROOVY-9363) False "Constructor call must
be the first statement in a constructor"
[ https://issues.apache.org/jira/browse/GROOVY-9363?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17019016#comment-17019016 ]
Eric Milles edited comment on GROOVY-9363 at 1/19/20 7:12 PM:
--------------------------------------------------------------
The parser currently sees "super \{ ... \}" as a method call expression (expression switch selects {{org.codehaus.groovy.antlr.AntlrParserPlugin#methodCallExpression}}). A "this(...)" or "super(...)" call is recognized separately by {{org.codehaus.groovy.antlr.AntlrParserPlugin.specialConstructorCallExpression}}.
was (Author: emilles):
The parser currently sees "super { ... }" as a method call expression (expression switch selects {{org.codehaus.groovy.antlr.AntlrParserPlugin#methodCallExpression}}). A "this(...)" or "super(...)" call is recognized separately by {{org.codehaus.groovy.antlr.AntlrParserPlugin.specialConstructorCallExpression}}.
> False "Constructor call must be the first statement in a constructor"
> ---------------------------------------------------------------------
>
> Key: GROOVY-9363
> URL: https://issues.apache.org/jira/browse/GROOVY-9363
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 2.5.8
> Reporter: Björn Kautler
> Priority: Major
>
> Given this script:
> {code:groovy}
> import java.util.function.Supplier
> class Foo {
> Foo(Supplier<?> supplier) {
> }
> }
> class Bar extends Foo {
> Bar() {
> super { null }
> }
> }
> new Bar()
> {code}
> I'd expect everything to be ok, but the compiler complains that "Constructor call must be the first statement in a constructor".
> Using {{super(\{ null \})}} instead works fine.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)