You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Ben Podoll (JIRA)" <ji...@apache.org> on 2015/10/19 18:41:05 UTC

[jira] [Created] (GROOVY-7639) NPE when using safe traversal operator with CompileStatic

Ben Podoll created GROOVY-7639:
----------------------------------

             Summary: NPE when using safe traversal operator with CompileStatic
                 Key: GROOVY-7639
                 URL: https://issues.apache.org/jira/browse/GROOVY-7639
             Project: Groovy
          Issue Type: Bug
          Components: Compiler
    Affects Versions: 2.4.5
            Reporter: Ben Podoll


In the code below, the "if" condition throws a NPE when it reaches the "p3" object. If I remove the @CompileStatic from the "SomeOther" class it works.

import groovy.transform.CompileStatic

@CompileStatic
class Person {
  String name
  OtherInfo otherInfo
}

@CompileStatic
class OtherInfo {
  int favoriteNumber
}

@CompileStatic
class SomeOther {
  SomeOther() {
    Person p1 = new Person(name: 'Ben', otherInfo: new OtherInfo(favoriteNumber: 1))
    Person p2 = new Person(name: 'Aaron', otherInfo: new OtherInfo())
    Person p3 = new Person(name: 'Fred')
    [p1,p2,p3].each { Person p ->
      println "checking: ${p.name}"
      println p?.otherInfo?.favoriteNumber
      if(p?.otherInfo?.favoriteNumber == 7){
        println "luckiest number!"
      }
    }
  }
}

new SomeOther()




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)