You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/07/30 14:41:31 UTC
[groovy] branch GROOVY_4_0_X updated: GROOVY-10712: STC: for-in loop over iterator
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY_4_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_4_0_X by this push:
new 80800c3906 GROOVY-10712: STC: for-in loop over iterator
80800c3906 is described below
commit 80800c39065dcbb99a7334ed05b4eb5144233655
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sat Jul 30 09:35:00 2022 -0500
GROOVY-10712: STC: for-in loop over iterator
---
.../codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java | 4 ++++
src/test/groovy/transform/stc/LoopsSTCTest.groovy | 6 +++---
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 473a1ccb55..64fd0f83cb 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -2002,6 +2002,10 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
ClassNode col = GenericsUtils.parameterizeType(collectionType, ENUMERATION_TYPE);
componentType = getCombinedBoundType(col.getGenericsTypes()[0]);
+ } else if (isOrImplements(collectionType, Iterator_TYPE)) { // GROOVY-10712
+ ClassNode col = GenericsUtils.parameterizeType(collectionType, Iterator_TYPE);
+ componentType = getCombinedBoundType(col.getGenericsTypes()[0]);
+
} else if (isStringType(collectionType)) {
componentType = STRING_TYPE;
} else {
diff --git a/src/test/groovy/transform/stc/LoopsSTCTest.groovy b/src/test/groovy/transform/stc/LoopsSTCTest.groovy
index 70039d5b55..57627ba2e0 100644
--- a/src/test/groovy/transform/stc/LoopsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/LoopsSTCTest.groovy
@@ -238,14 +238,14 @@ class LoopsSTCTest extends StaticTypeCheckingTestCase {
'''
}
- // GROOVY-8487
+ // GROOVY-8487, GROOVY-10712
void testForInLoopOnIterator() {
assertScript '''
def list = []
for (item in ['a','b','c'].iterator()) {
- list.add(item)
+ list.add(item.toUpperCase())
}
- assert list.join('') == 'abc'
+ assert list == ['A','B','C']
'''
}