You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2020/11/11 02:01:05 UTC

[jira] [Closed] (GROOVY-9459) Line number information for automatically inserted return statements quirky

     [ https://issues.apache.org/jira/browse/GROOVY-9459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul King closed GROOVY-9459.
-----------------------------

> Line number information for automatically inserted return statements quirky
> ---------------------------------------------------------------------------
>
>                 Key: GROOVY-9459
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9459
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 3.0.0
>            Reporter: Björn Kautler
>            Assignee: Paul King
>            Priority: Major
>             Fix For: 4.0.0-alpha-1, 3.0.3
>
>
> While trying to work-around GROOVY-9440, I found another quirk regarding line numbers.
> I'm sorry if this is intended and not a bug, but it looks strange to me.
> Here what I found out so far:
>  
> The Spock AST transformation previously had (semantically equivalent) {{new ReturnStatement(new ExpressionStatement(theVariableExpression)))}} where the two statements have no line information, the expression does have it.
> This caused the line information to be missing from the {{MissingPropertyException}}.
> If I look at the AST Browser at end of semantic analysis, this results in {{ReturnStatement -> Variable}} where the return statement has no line information, the variable does have it, in both 2.5.8 and 3.0.0.
>  
> I thought as work-around I remove the explicit return statement and let Groovy handle it, as it knows better what to do, so currently I have {{new ExpressionStatement(theVariableExpression))}} where the statement still has no line information, but the expression does have it.
> This now causes the line information to be missing from the {{MissingPropertyException}} still, if Groovy 3.0.0 is used.
> If I look at the AST Browser at end of semantic analysis, this results in {{ExpressionStatement -> Variable}} where the statement has no line information, the variable does have it, in both 2.5.8 and 3.0.0.
> If I now look at the end of class generation, this results in {{ReturnStatement -> Variable}} in both 2.5.8 and 3.0.0, but only 2.5.8 has line information for the return statement, in 3.0.0 it is {{-1}}.
>  
> I now tried {{ExpressionStatement exprStat = new ExpressionStatement(theVariableExpression)); exprStat.setLineNumber(666);}} and now it gets even fancier.
> In 2.5.8 the return statement takes the line information from the variable expression, ignoring the expression statement,
> in 3.0.0 the return statement takes the line information from the expression statement.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)