Since I just stumbled across this behavior while helping a junior developer debug his code: Why does statically compiled Groovy (2.5.2) return null from void methods, instead of raising a compile error ?
E.g. import groovy.transform.CompileStatic @CompileStatic class Goo { void calcId(String a, String b) { // Programming error: Return type should be String "${a}.${b}" } String getId() { calcId("abera","kadavera") } String getId2() { String id = calcId("abera","kadavera") return id } } final Goo goo = new Goo() println "goo.calcId(...)=${goo.calcId("x","y")}" println "goo.id=${goo.id}" println "goo.id2=${goo.id2}" outputs goo.calcId(...)=null goo.id=null goo.id2=null Cheers,mg