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)

Reply via email to