Details
Description
When using @Immutable with a certain combination of properties, I get a NullPointerException as shown in the stack trace below.
The most basic way I've found to reproduce this is with the two classes. Note that if I remove the 'final' keyword from properties, or don't include an implementation of toString() in the TestBean class, then the error goes away.
java.lang.NullPointerException
at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:35)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:179)
at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitIfElse(ClassCodeExpressionTransformer.java:80)
at org.codehaus.groovy.ast.stmt.IfStatement.visit(IfStatement.java:41)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:102)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:113)
at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:50)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructor(ClassCodeVisitorSupport.java:120)
at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1166)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:51)
at org.codehaus.groovy.control.OptimizerVisitor.visitClass(OptimizerVisitor.java:49)
at org.codehaus.groovy.control.CompilationUnit$6.call(CompilationUnit.java:778)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1122)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:594)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:572)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:549)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.processToPhase(GroovyCompilationUnitDeclaration.java:171)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.generateCode(GroovyCompilationUnitDeclaration.java:1526)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:831)
at org.eclipse.jdt.internal.compiler.ProcessTaskManager.run(ProcessTaskManager.java:137)
at java.lang.Thread.run(Thread.java:680)