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

Reply via email to