Eric Milles created GROOVY-11335:
------------------------------------

             Summary: STC: for loop element type inference with multiple 
instanceof
                 Key: GROOVY-11335
                 URL: https://issues.apache.org/jira/browse/GROOVY-11335
             Project: Groovy
          Issue Type: Bug
          Components: Static Type Checker
            Reporter: Eric Milles
            Assignee: Eric Milles


Consider the following:
{code:groovy}
@groovy.transform.TypeChecked
void test(obj) {
  if (obj instanceof Collection) {
    if (obj instanceof Serializable) {
      for (item in obj) {
        println item
      }
    }
  }
}
{code}

The inferred type of "obj" is (Collection & Serializable).  The loop element 
check fails with:
{code}
java.lang.UnsupportedOperationException
        at 
org.codehaus.groovy.transform.stc.UnionTypeClassNode.getComponentType(UnionTypeClassNode.java:232)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.inferLoopElementType(StaticTypeCheckingVisitor.java:2042)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitForLoop(StaticTypeCheckingVisitor.java:2008)
        at org.codehaus.groovy.ast.stmt.ForStatement.visit(ForStatement.java:47)
{code}




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

Reply via email to