Daniil Ovchinnikov created GROOVY-9345: ------------------------------------------
Summary: Closure shared variable type is polluted with unreached assignment type Key: GROOVY-9345 URL: https://issues.apache.org/jira/browse/GROOVY-9345 Project: Groovy Issue Type: Bug Components: Static compilation, Static Type Checker Reporter: Daniil Ovchinnikov {code} @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 {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)