-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 3.0.0-rc-2
-
Fix Version/s: 3.0.0-rc-3
-
Component/s: None
-
Labels:None
Consider the following:
@groovy.transform.CompileStatic class C { void m() { java.util.function.Consumer<C> consumer = c -> null consumer.accept(this) } }
The lambda expression produces a compiler error:
A transform used a generics containing ClassNode C for the method public void doCall(C c) { ... } directly. You are not supposed to do this. Please create a new ClassNode referring to the old ClassNode and use the new ClassNode instead of the old one. Otherwise the compiler will create wrong descriptors and a potential NullPointerException in TypeResolver in the OpenJDK. If this is not your own doing, please report this bug to the writer of the transform. @ line 4, column 60. .function.Consumer<C> consumer = c -> null ^ 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:287) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1091) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:633) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:612) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:589) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:367) at groovy.lang.GroovyClassLoader.lambda$parseClass$2(GroovyClassLoader.java:310) ...
- links to