Daniil Ovchinnikov created GROOVY-9346: ------------------------------------------
Summary: Closure shared variable type is polluted with previous assignment type Key: GROOVY-9346 URL: https://issues.apache.org/jira/browse/GROOVY-9346 Project: Groovy Issue Type: Bug Components: Static Type Checker Affects Versions: 2.5.8 Reporter: Daniil Ovchinnikov {code:java} class A { def foo() {42} } @groovy.transform.CompileStatic def cs() { def var var = "hi" // commenting this line fixes the issue var = new A() def c = { var = new A() } c() var.foo() // [Static type checking] - A closure shared variable [var] has been assigned with various types and the method [foo()] 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. } assert cs() == 42 {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)