Affects Version/s: 3.0.6
Fix Version/s: 4.0.0-alpha-3
Component/s: Static compilation
Environment:openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
I have encountered an issue when trying to generate code, containing chained method calls, at runtime (without source code) and compiling using CompileStatic.
What I am trying to achieve is produce code similar to:
I create the appropriate AST nodes, statements, expressions, etc.
Everything works fine if I add a method like the one shown in a top-level class (the class is also dynamically generated at runtime). However, if I try to add the exact same method to a nested class, it seems like the groovy compiler gets somehow confused and, judging by the decompiler output, produces something like:
Naturally, this does not work.
Here's how I try to generate the method:
Perhaps I am missing something, in which case I will be very happy to receive some pointers.
I have created a github repo with a maven project containing a unit test that demonstrates the issue: https://github.com/l-atanasov/groovy-static-compile-issue
Note, that I have extended the CompilationUnit a little to allow to run the static compiler without source.
Also, if I am not using the static compiler, everything works as expected.
Update: reformatted code for readability