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