You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Anton Pryamostanov (JIRA)" <ji...@apache.org> on 2018/12/18 12:53:00 UTC

[jira] [Commented] (GROOVY-8834) Making "public" - BinaryExpression.leftExpression and similar fields

    [ https://issues.apache.org/jira/browse/GROOVY-8834?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16724025#comment-16724025 ] 

Anton Pryamostanov commented on GROOVY-8834:
--------------------------------------------

Hi [~emilles], [~paulk],

I just faced some issues related to "caching" of expressions, and have a better understanding of what you refer to.

It seems that same expression instances are reused in different ASTs within compilation process.

That is e.g. "this" VariableExpression is being part of AST of ClassA and as well in ClassB (same **instance** of VariableExpression).

And transforming it affects both ASTs.

I need some time to think over it and share my suggestions with you.

> Making "public" - BinaryExpression.leftExpression and similar fields
> --------------------------------------------------------------------
>
>                 Key: GROOVY-8834
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8834
>             Project: Groovy
>          Issue Type: Wish
>            Reporter: Anton Pryamostanov
>            Priority: Major
>              Labels: ast
>
> This is a general request related to AST API.
>  
> Currently BinaryExpression.leftExpression and similar fields are having Private access.
> So to change the value, we need to replace the whole BinaryExpression with new one.
> This is not useful as it requires coding outside of Visitor methods, and I do not see reason why it should be private. It will greatly simplify visitor methods and transformations, if all Expression fields will have Public access.
> Alternatively please add setter methods with Public access.
> List of fields to be changed from Private to Public:
> {code:java}
> ArrayExpression->expressions
> ArrayExpression->sizeExpression
> BitwiseNegationExpression->expression
> BooleanExpression->expression
> CastExpression->expression
> ConstructorCallExpression->arguments
> GStringExpression->strings
> GStringExpression->values
> ListExpression->expressions
> MapExpression->mapEntryExpressions
> MethodPointerExpression->expression
> MethodPointerExpression->methodName
> PropertyExpression->property
> RangeExpression->from
> RangeExpression->to
> SpreadExpression->expression
> SpreadMapExpression->expression
> StaticMethodCallExpression->arguments
> TernaryExpression->booleanExpression
> TernaryExpression->trueExpression
> TernaryExpression->falseExpression
> TupleExpression->expressions
> UnaryMinusExpression->expression
> UnaryPlusExpression->expression{code}
> Note: those fields with "final" modifier should also be made re-assignable.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)