Paul King created GROOVY-10954:
----------------------------------

             Summary: Flow typing anomaly with multi-assignment
                 Key: GROOVY-10954
                 URL: https://issues.apache.org/jira/browse/GROOVY-10954
             Project: Groovy
          Issue Type: Improvement
            Reporter: Paul King


The following method compiles fine. Flow typing is used for type inference on 
{{a}}.
{code}
@groovy.transform.TypeChecked
def method1() {
    def a = 42
    assert a.intValue() == 42
    a = 'ant'
    assert a.toUpperCase() == 'ANT'
}
method1()
{code}

The following method, which differs only that multi-assignment (with one 
assignment in this case) is in use, fails to compile:
{code}
@groovy.transform.TypeChecked
def method2() {
    def (b) = [42]
    assert b.intValue() == 42
    (b) = ['bee']     // Cannot assign value of type java.lang.String to 
variable of type int
    assert b.toUpperCase() == 'BEE'    // Cannot find matching method 
int#toUpperCase()
}
method2()
{code}
I can't recall any discussion about why we wouldn't support the second example.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to