Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-5449

NullPointerException in compiler when using @Immutable

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.8.6
    • 2.1.4
    • Compiler
    • None
    • Mac OS/X Lion, Java 1.6.0_29

    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)

      Attachments

        1. OtherBean.groovy
          0.2 kB
          Jan Stette
        2. TestBean.groovy
          0.2 kB
          Jan Stette

        Activity

          People

            melix Cédric Champeau
            jans70 Jan Stette
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: