Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.0.10, 3.0.20
-
None
-
None
Description
After migrating from Groovy 2.5 to Groovy 4.0, we experience some strange parsing behavior.
def foo = "spongebog" def bar = " squarepants" (foo) + (bar)
The above snippet will yield a parser error "Unable to resolve class foo".
This worked fine in 2.5, but seems to have been broken since 3.0. (Tried it in Groovy web console)
I couldn't find any hints in the release notes, what might be the cause of this change and I am not sure what the expression (ClassName) even tries to perform. After all class names work as constants for their Class instance (without .class as in Java) anyway, with or without brackets.
We know that those brackets are unnecessary, but for a reason that I am not aware of, we have lots of such expressions lying around in small snippets.
Note: Our application is written in Java, but allows users to adapt runtime behavior using Groovy scripts and also is used for expressions in mail templates. which means we cannot just change the affected code, as they will still linger around in databases across different installations of our software.
Attachments
Issue Links
- is related to
-
GROOVY-10724 Parrot parser incorrectly treats an expression wrapped in parentheses as a cast
- Open