Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
@groovy.transform.CompileStatic def cs() { def var var = "hi" println var.toUpperCase() // [Static type checking] - A closure shared variable [var] has been assigned with various types and the method [toUpperCase()] does not exist in the lowest upper bound of those types: [java.lang.Object]. In general, this is a bad practice (variable reuse) because the compiler cannot determine safely what is the type of the variable at the moment of the call in a multithreaded context. def c = { var = new Object() } c() var.toString() } assert cs() != null