death lord created GROOVY-8487: ---------------------------------- Summary: @CompileStatic calls DefaultGroovyMethods.iterator with Iterator value in for loop Key: GROOVY-8487 URL: https://issues.apache.org/jira/browse/GROOVY-8487 Project: Groovy Issue Type: Improvement Components: bytecode, Static compilation Affects Versions: 2.4.12 Reporter: death lord
{code:java} @groovy.transform.CompileStatic class IteratorTest { static main(args) { final a = [1, 2, 3, 4, 5] for (x in a.iterator()) println x } } {code} bytecode (important part commented out): {code:java} 38 aastore 39 invokestatic #39 <org/codehaus/groovy/runtime/ScriptBytecodeAdapter/createList([Ljava/lang/Object;)Ljava/util/List;> 42 astore_1 43 aload_1 44 pop 45 aconst_null 46 astore_2 47 aload_1 48 invokeinterface #45 <java/util/List/iterator()Ljava/util/Iterator;> count 1 /*53 invokestatic #50 <org/codehaus/groovy/runtime/DefaultGroovyMethods/iterator(Ljava/lang/Object;)Ljava/util/Iterator;>*/ 56 astore_3 57 aload_3 58 invokeinterface #56 <java/util/Iterator/hasNext()Z> count 1 63 ifeq 84 (+21) 66 aload_3 67 invokeinterface #60 <java/util/Iterator/next()Ljava/lang/Object;> count 1 72 astore_2 73 ldc #2 <IteratorTest> 75 aload_2 76 invokestatic #64 <org/codehaus/groovy/runtime/DefaultGroovyMethods/println(Ljava/lang/Object;Ljava/lang/Object;)V> 79 aconst_null 80 pop 81 goto 57 (-24) 84 return {code} (sidenote: aren't 43-46 useless as well?) -- This message was sent by Atlassian JIRA (v7.6.3#76005)