You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2019/11/03 15:00:43 UTC

[groovy] branch master updated (df28077 -> 5143bb7)

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git.


    from df28077  Fix "java.lang.RuntimeException: No suitable ClassLoader found for grab" caused by refactoring
     new d676590  Minor refactoring: 'for' loop can be replaced with 'foreach'
     new 7ad8e56  Minor refactoring: 'while' loop can be replaced with 'foreach'
     new 0456dfa  Trivial refactoring: Anonymous type has shorter lambda alternative
     new ea12ea4  Trivial refactoring: `Collections.sort()` can be replaced with `List.sort()`
     new 5143bb7  Trivial refactoring: Comparator combinator can be used

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/main/java/groovy/inspect/Inspector.java        |   3 +-
 .../java/groovy/lang/BenchmarkInterceptor.java     |   6 +-
 src/main/java/groovy/lang/ExpandoMetaClass.java    |   5 +-
 src/main/java/groovy/lang/MetaClassImpl.java       |  34 +++----
 .../java/groovy/util/FactoryBuilderSupport.java    |   7 +-
 .../util/concurrentlinkedhashmap/Weighers.java     |   8 +-
 src/main/java/org/codehaus/groovy/antlr/Main.java  |  31 +++---
 .../groovy/antlr/java/Java2GroovyProcessor.java    |   5 +-
 .../groovy/antlr/treewalker/CompositeVisitor.java  |  20 ++--
 .../antlr/treewalker/FlatNodeListTraversal.java    |   8 +-
 .../groovy/ast/expr/ArgumentListExpression.java    |   3 +-
 .../codehaus/groovy/ast/tools/GenericsUtils.java   |   4 +-
 .../groovy/classgen/AsmClassGenerator.java         |  18 ++--
 .../codehaus/groovy/classgen/BytecodeSequence.java |   7 +-
 .../groovy/classgen/DummyClassGenerator.java       |   9 +-
 .../codehaus/groovy/classgen/asm/CompileStack.java |   9 +-
 .../groovy/classgen/asm/InvocationWriter.java      |  18 ++--
 .../codehaus/groovy/classgen/asm/MethodCaller.java |   3 +-
 .../codehaus/groovy/control/ErrorCollector.java    |  12 +--
 .../java/org/codehaus/groovy/control/Janitor.java  |   6 +-
 .../groovy/reflection/CachedConstructor.java       |   3 +-
 .../groovy/runtime/DefaultGroovyMethods.java       |  10 +-
 .../groovy/runtime/EncodingGroovyMethods.java      |   4 +-
 .../groovy/runtime/ScriptBytecodeAdapter.java      |   4 +-
 .../runtime/metaclass/ConcurrentReaderHashMap.java | 108 ++++++++++-----------
 .../runtime/metaclass/MetaClassRegistryImpl.java   |   4 +-
 .../groovy/runtime/metaclass/MetaMethodIndex.java  |   4 +-
 .../runtime/powerassert/AssertionRenderer.java     |   5 +-
 .../java/org/codehaus/groovy/syntax/CSTNode.java   |  14 +--
 .../codehaus/groovy/tools/FileSystemCompiler.java  |   4 +-
 .../groovy/tools/javac/JavaStubGenerator.java      |   6 +-
 .../groovy/tools/shell/util/MessageSource.java     |  11 +--
 .../transform/AnnotationCollectorTransform.java    |   3 +-
 .../transform/SortableASTTransformation.java       |   5 +-
 .../transform/ToStringASTTransformation.java       |   5 +-
 .../TupleConstructorASTTransformation.java         |   5 +-
 .../transform/stc/StaticTypeCheckingSupport.java   |   3 +-
 .../groovy/util/AbstractConcurrentMap.java         |  12 +--
 .../groovy/util/AbstractConcurrentMapBase.java     | 100 +++++++++----------
 .../groovy/util/ManagedConcurrentLinkedQueue.java  |   4 +-
 .../org/codehaus/groovy/util/ReferenceManager.java |  38 ++++----
 .../codehaus/groovy/vmplugin/v5/JUnit4Utils.java   |   6 +-
 .../v7/IndyGuardsFiltersAndSignatures.java         |   5 +-
 43 files changed, 258 insertions(+), 321 deletions(-)


[groovy] 03/05: Trivial refactoring: Anonymous type has shorter lambda alternative

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 0456dfa8b072581dd0fca3a12f5e937085545863
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Nov 3 22:52:43 2019 +0800

    Trivial refactoring: Anonymous type has shorter lambda alternative
---
 .../org/codehaus/groovy/util/ReferenceManager.java | 38 ++++++++++------------
 1 file changed, 18 insertions(+), 20 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/util/ReferenceManager.java b/src/main/java/org/codehaus/groovy/util/ReferenceManager.java
index 6ab6d56..9bcc168 100644
--- a/src/main/java/org/codehaus/groovy/util/ReferenceManager.java
+++ b/src/main/java/org/codehaus/groovy/util/ReferenceManager.java
@@ -28,28 +28,26 @@ public class ReferenceManager {
         private volatile boolean shouldRun = true; 
         public ThreadedReferenceManager(ReferenceQueue queue) {
             super(queue);
-            thread = new Thread() {
-                public void run() {
-                    ReferenceQueue queue = getReferenceQueue();
-                    java.lang.ref.Reference r=null;
-                    while (shouldRun) {
-                        try {
-                            r = queue.remove(1000);
-                        }  catch (InterruptedException e) {
-                            break;
-                        }
-                        if (r==null) continue;
-                        
-                        if (r instanceof Reference) {
-                            Reference ref = (Reference) r;
-                            Finalizable holder = ref.getHandler();
-                            if (holder!=null) holder.finalizeReference();
-                        }                  
-                        r.clear();
-                        r=null;
+            thread = new Thread(() -> {
+                ReferenceQueue queue1 = getReferenceQueue();
+                java.lang.ref.Reference r=null;
+                while (shouldRun) {
+                    try {
+                        r = queue1.remove(1000);
+                    }  catch (InterruptedException e) {
+                        break;
                     }
+                    if (r==null) continue;
+
+                    if (r instanceof Reference) {
+                        Reference ref = (Reference) r;
+                        Finalizable holder = ref.getHandler();
+                        if (holder!=null) holder.finalizeReference();
+                    }
+                    r.clear();
+                    r=null;
                 }
-            };
+            });
             thread.setContextClassLoader(null);
             thread.setDaemon(true);
             thread.setName(ThreadedReferenceManager.class.getName());


[groovy] 04/05: Trivial refactoring: `Collections.sort()` can be replaced with `List.sort()`

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit ea12ea4a039d51160ad61b52f9d3a477edd4dcd7
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Nov 3 22:54:42 2019 +0800

    Trivial refactoring: `Collections.sort()` can be replaced with `List.sort()`
---
 src/main/java/groovy/inspect/Inspector.java                    |  3 +--
 src/main/java/groovy/lang/MetaClassImpl.java                   |  6 +++---
 .../org/codehaus/groovy/classgen/asm/InvocationWriter.java     |  3 +--
 .../java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java | 10 +++++-----
 .../codehaus/groovy/runtime/powerassert/AssertionRenderer.java |  5 +----
 .../codehaus/groovy/transform/SortableASTTransformation.java   |  3 +--
 .../codehaus/groovy/transform/ToStringASTTransformation.java   |  3 +--
 .../groovy/transform/TupleConstructorASTTransformation.java    |  3 +--
 8 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/src/main/java/groovy/inspect/Inspector.java b/src/main/java/groovy/inspect/Inspector.java
index caf5cd3..12fce8b 100644
--- a/src/main/java/groovy/inspect/Inspector.java
+++ b/src/main/java/groovy/inspect/Inspector.java
@@ -32,7 +32,6 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
@@ -306,7 +305,7 @@ public class Inspector {
     }
 
     public static Collection sort(List<Object> memberInfo) {
-        Collections.sort(memberInfo, new MemberComparator());
+        memberInfo.sort(new MemberComparator());
         return memberInfo;
     }
 
diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java
index 94cb823..93573d2 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -1632,7 +1632,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
             String descriptor1 = BytecodeHelper.getMethodDescriptor(Void.TYPE, c1.getNativeParameterTypes());
             return descriptor0.compareTo(descriptor1);
         };
-        Collections.sort(l, comp);
+        l.sort(comp);
         int found = -1;
         for (int i = 0; i < l.size(); i++) {
             if (l.get(i) != constructor) continue;
@@ -2347,7 +2347,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
             // sort interfaces so that we may ensure a deterministic behaviour in case of
             // ambiguous fields (class implementing two interfaces using the same field)
             if (superInterfaces.size() > 1) {
-                Collections.sort(superInterfaces, CACHED_CLASS_NAME_COMPARATOR);
+                superInterfaces.sort(CACHED_CLASS_NAME_COMPARATOR);
             }
 
             SingleKeyHashMap iPropertyIndex = classPropertyIndex.getNotNull(theCachedClass);
@@ -2368,7 +2368,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
             // sort interfaces so that we may ensure a deterministic behaviour in case of
             // ambiguous fields (class implementing two interfaces using the same field)
             if (interfaces.size() > 1) {
-                Collections.sort(interfaces, CACHED_CLASS_NAME_COMPARATOR);
+                interfaces.sort(CACHED_CLASS_NAME_COMPARATOR);
             }
 
             // if this an Array, then add the special read-only "length" property
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java
index 472f70a..123f38b 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java
@@ -50,7 +50,6 @@ import org.objectweb.asm.MethodVisitor;
 
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -725,7 +724,7 @@ public class InvocationWriter {
             String descriptor1 = BytecodeHelper.getMethodDescriptor(ClassHelper.VOID_TYPE, c1.getParameters());
             return descriptor0.compareTo(descriptor1);
         };
-        Collections.sort(constructors, comp);
+        constructors.sort(comp);
         return constructors;
     }
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index 04f6b5a..d5d0d44 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -9219,7 +9219,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      */
     public static <T> List<T> sort(Iterable<T> self, boolean mutate) {
         List<T> answer = mutate ? asList(self) : toList(self);
-        Collections.sort(answer, new NumberAwareComparator<T>());
+        answer.sort(new NumberAwareComparator<T>());
         return answer;
     }
 
@@ -9387,7 +9387,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      */
     public static <T> List<T> sort(Iterable<T> self, boolean mutate, Comparator<? super T> comparator) {
         List<T> list = mutate ? asList(self) : toList(self);
-        Collections.sort(list, comparator);
+        list.sort(comparator);
         return list;
     }
 
@@ -9581,9 +9581,9 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
         // use a comparator of one item or two
         int params = closure.getMaximumNumberOfParameters();
         if (params == 1) {
-            Collections.sort(list, new OrderBy<T>(closure));
+            list.sort(new OrderBy<T>(closure));
         } else {
-            Collections.sort(list, new ClosureComparator<T>(closure));
+            list.sort(new ClosureComparator<T>(closure));
         }
         return list;
     }
@@ -9649,7 +9649,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      */
     public static <T> List<T> toSorted(Iterable<T> self, Comparator<T> comparator) {
         List<T> list = toList(self);
-        Collections.sort(list, comparator);
+        list.sort(comparator);
         return list;
     }
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java b/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java
index e911e6c..218a925 100644
--- a/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java
+++ b/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java
@@ -21,7 +21,6 @@ package org.codehaus.groovy.runtime.powerassert;
 import org.codehaus.groovy.runtime.InvokerHelper;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -71,9 +70,7 @@ public final class AssertionRenderer {
     private void sortValues() {
         // it's important to use a stable sort here, otherwise
         // renderValues() will skip the wrong values
-        Collections.sort(recorder.getValues(),
-                (v1, v2) -> v2.getColumn() - v1.getColumn()
-        );
+        recorder.getValues().sort((v1, v2) -> v2.getColumn() - v1.getColumn());
     }
 
     private void renderValues() {
diff --git a/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java
index 7acd487..1f8cd4d 100644
--- a/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java
@@ -39,7 +39,6 @@ import org.codehaus.groovy.runtime.AbstractComparator;
 import org.codehaus.groovy.runtime.StringGroovyMethods;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
@@ -237,7 +236,7 @@ public class SortableASTTransformation extends AbstractASTTransformation {
         }
         if (includes != null) {
             Comparator<PropertyNode> includeComparator = (o1, o2) -> Integer.compare(includes.indexOf(o1.getName()), includes.indexOf(o2.getName()));
-            Collections.sort(properties, includeComparator);
+            properties.sort(includeComparator);
         }
         return properties;
     }
diff --git a/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java
index 7de6e13..a8acd42 100644
--- a/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java
@@ -40,7 +40,6 @@ import org.codehaus.groovy.runtime.InvokerHelper;
 import org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
@@ -219,7 +218,7 @@ public class ToStringASTTransformation extends AbstractASTTransformation {
 
         if (includes != null) {
             Comparator<ToStringElement> includeComparator = (tse1, tse2) -> Integer.compare(includes.indexOf(tse1.name), includes.indexOf(tse2.name));
-            Collections.sort(elements, includeComparator);
+            elements.sort(includeComparator);
         }
 
         for (ToStringElement el : elements) {
diff --git a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
index def9095..df4be58 100644
--- a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
@@ -48,7 +48,6 @@ import org.codehaus.groovy.control.SourceUnit;
 
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -249,7 +248,7 @@ public class TupleConstructorASTTransformation extends AbstractASTTransformation
 
         if (includes != null) {
             Comparator<Parameter> includeComparator = (p1, p2) -> Integer.compare(includes.indexOf(p1.getName()), includes.indexOf(p2.getName()));
-            Collections.sort(params, includeComparator);
+            params.sort(includeComparator);
         }
 
         boolean hasMapCons = AnnotatedNodeUtils.hasAnnotation(cNode, MapConstructorASTTransformation.MY_TYPE);


[groovy] 05/05: Trivial refactoring: Comparator combinator can be used

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 5143bb7f8aa9b2ddd35b20624f0e7e441b35ed95
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Nov 3 22:57:06 2019 +0800

    Trivial refactoring: Comparator combinator can be used
---
 src/main/java/groovy/util/FactoryBuilderSupport.java               | 7 +------
 .../org/codehaus/groovy/transform/SortableASTTransformation.java   | 2 +-
 .../org/codehaus/groovy/transform/ToStringASTTransformation.java   | 2 +-
 .../groovy/transform/TupleConstructorASTTransformation.java        | 2 +-
 4 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/main/java/groovy/util/FactoryBuilderSupport.java b/src/main/java/groovy/util/FactoryBuilderSupport.java
index be85429..7c9642f 100644
--- a/src/main/java/groovy/util/FactoryBuilderSupport.java
+++ b/src/main/java/groovy/util/FactoryBuilderSupport.java
@@ -71,12 +71,7 @@ public abstract class FactoryBuilderSupport extends Binding {
     public static final String CHILD_BUILDER = "_CHILD_BUILDER_";
     public static final String SCRIPT_CLASS_NAME = "_SCRIPT_CLASS_NAME_";
     private static final Logger LOG = Logger.getLogger(FactoryBuilderSupport.class.getName());
-    private static final Comparator<Method> METHOD_COMPARATOR = (o1, o2) -> {
-        int cmp = o1.getName().compareTo(o2.getName());
-        if (cmp != 0) return cmp;
-        cmp = o1.getParameterTypes().length - o2.getParameterTypes().length;
-        return cmp;
-    };
+    private static final Comparator<Method> METHOD_COMPARATOR = Comparator.comparing(Method::getName).thenComparingInt(o -> o.getParameterTypes().length);
 
     /**
      * Throws an exception if value is null.
diff --git a/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java
index 1f8cd4d..c12ff24 100644
--- a/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/SortableASTTransformation.java
@@ -235,7 +235,7 @@ public class SortableASTTransformation extends AbstractASTTransformation {
             checkComparable(pNode);
         }
         if (includes != null) {
-            Comparator<PropertyNode> includeComparator = (o1, o2) -> Integer.compare(includes.indexOf(o1.getName()), includes.indexOf(o2.getName()));
+            Comparator<PropertyNode> includeComparator = Comparator.comparingInt(o -> includes.indexOf(o.getName()));
             properties.sort(includeComparator);
         }
         return properties;
diff --git a/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java
index a8acd42..80871a4 100644
--- a/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/ToStringASTTransformation.java
@@ -217,7 +217,7 @@ public class ToStringASTTransformation extends AbstractASTTransformation {
         }
 
         if (includes != null) {
-            Comparator<ToStringElement> includeComparator = (tse1, tse2) -> Integer.compare(includes.indexOf(tse1.name), includes.indexOf(tse2.name));
+            Comparator<ToStringElement> includeComparator = Comparator.comparingInt(tse -> includes.indexOf(tse.name));
             elements.sort(includeComparator);
         }
 
diff --git a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
index df4be58..4c97c67 100644
--- a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
@@ -247,7 +247,7 @@ public class TupleConstructorASTTransformation extends AbstractASTTransformation
         }
 
         if (includes != null) {
-            Comparator<Parameter> includeComparator = (p1, p2) -> Integer.compare(includes.indexOf(p1.getName()), includes.indexOf(p2.getName()));
+            Comparator<Parameter> includeComparator = Comparator.comparingInt(p -> includes.indexOf(p.getName()));
             params.sort(includeComparator);
         }
 


[groovy] 02/05: Minor refactoring: 'while' loop can be replaced with 'foreach'

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 7ad8e563ad119efa1a68f5ae23cb533a96219a31
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Nov 3 22:50:59 2019 +0800

    Minor refactoring: 'while' loop can be replaced with 'foreach'
---
 .../groovy/antlr/java/Java2GroovyProcessor.java      |  5 +----
 .../groovy/antlr/treewalker/CompositeVisitor.java    | 20 ++++++++++++--------
 .../antlr/treewalker/FlatNodeListTraversal.java      |  8 +++-----
 .../org/codehaus/groovy/control/ErrorCollector.java  | 12 +++++-------
 .../java/org/codehaus/groovy/control/Janitor.java    |  6 ++----
 5 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/antlr/java/Java2GroovyProcessor.java b/src/main/java/org/codehaus/groovy/antlr/java/Java2GroovyProcessor.java
index 689df7e..3f21086 100644
--- a/src/main/java/org/codehaus/groovy/antlr/java/Java2GroovyProcessor.java
+++ b/src/main/java/org/codehaus/groovy/antlr/java/Java2GroovyProcessor.java
@@ -38,16 +38,13 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.PrintStream;
 import java.io.StringReader;
-import java.util.Iterator;
 import java.util.List;
 
 @Deprecated
 public class Java2GroovyProcessor {
 
     public static void processFiles(List<String> fileNames) throws Exception {
-        Iterator i = fileNames.iterator();
-        while (i.hasNext()) {
-            String filename = (String) i.next();
+        for (String filename : fileNames) {
             File f = new File(filename);
             String text = ResourceGroovyMethods.getText(f);
             System.out.println(convert(filename, text, true, true));
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java
index c89b69d..87e242f 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java
@@ -60,8 +60,9 @@ public class CompositeVisitor implements Visitor{
     }
 
     public void setUp() {
-        Iterator itr = visitors.iterator();
-        while (itr.hasNext()) {((Visitor)itr.next()).setUp();}
+        for (Object visitor : visitors) {
+            ((Visitor) visitor).setUp();
+        }
     }
 
     public void visitAbstract(GroovySourceAST t, int visit) {
@@ -1160,18 +1161,21 @@ public class CompositeVisitor implements Visitor{
     }
 
     public void tearDown() {
-        Iterator itr = backToFrontVisitors.iterator();
-        while (itr.hasNext()) {((Visitor)itr.next()).tearDown();}
+        for (Object backToFrontVisitor : backToFrontVisitors) {
+            ((Visitor) backToFrontVisitor).tearDown();
+        }
     }
 
     public void push(GroovySourceAST t) {
-        Iterator itr = visitors.iterator();
-        while (itr.hasNext()) {((Visitor)itr.next()).push(t);}
+        for (Object visitor : visitors) {
+            ((Visitor) visitor).push(t);
+        }
     }
     public GroovySourceAST pop() {
         GroovySourceAST lastNodePopped = null;
-        Iterator itr = backToFrontVisitors.iterator();
-        while (itr.hasNext()) {lastNodePopped = (GroovySourceAST) ((Visitor)itr.next()).pop();}
+        for (Object backToFrontVisitor : backToFrontVisitors) {
+            lastNodePopped = (GroovySourceAST) ((Visitor) backToFrontVisitor).pop();
+        }
         return lastNodePopped;
     }
 }
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java
index d64fa20..14cc8cb 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java
@@ -22,7 +22,6 @@ import antlr.collections.AST;
 import org.codehaus.groovy.antlr.AntlrASTProcessor;
 import org.codehaus.groovy.antlr.GroovySourceAST;
 
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -44,10 +43,9 @@ public class FlatNodeListTraversal extends TraversalHelper {
         List listOfAllNodesInThisAST = collector.getNodes();
         
         // process each node in turn
-        setUp(node);        
-        Iterator itr = listOfAllNodesInThisAST.iterator();
-        while (itr.hasNext()) {
-            GroovySourceAST currentNode = (GroovySourceAST) itr.next();
+        setUp(node);
+        for (Object o : listOfAllNodesInThisAST) {
+            GroovySourceAST currentNode = (GroovySourceAST) o;
             accept(currentNode);
         }
         tearDown(node);
diff --git a/src/main/java/org/codehaus/groovy/control/ErrorCollector.java b/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
index 67de50a..232d3df 100644
--- a/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
+++ b/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
@@ -28,7 +28,6 @@ import org.codehaus.groovy.syntax.SyntaxException;
 
 import java.io.PrintWriter;
 import java.io.Serializable;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -318,15 +317,14 @@ public class ErrorCollector implements Serializable {
 
     private void write(PrintWriter writer, Janitor janitor, List messages, String txt) {
         if (messages==null || messages.isEmpty()) return;
-        Iterator iterator = messages.iterator();
-        while (iterator.hasNext()) {
-            Message message = (Message) iterator.next();
+        for (Object o : messages) {
+            Message message = (Message) o;
             message.write(writer, janitor);
-            
-            if (configuration.getDebug() && (message instanceof SyntaxErrorMessage)){
+
+            if (configuration.getDebug() && (message instanceof SyntaxErrorMessage)) {
                 SyntaxErrorMessage sem = (SyntaxErrorMessage) message;
                 sem.getCause().printStackTrace(writer);
-            } 
+            }
             writer.println();
         }
 
diff --git a/src/main/java/org/codehaus/groovy/control/Janitor.java b/src/main/java/org/codehaus/groovy/control/Janitor.java
index 862bc09..46885ed 100644
--- a/src/main/java/org/codehaus/groovy/control/Janitor.java
+++ b/src/main/java/org/codehaus/groovy/control/Janitor.java
@@ -19,7 +19,6 @@
 package org.codehaus.groovy.control;
 
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Set;
 
 /**
@@ -34,9 +33,8 @@ public class Janitor implements HasCleanup {
     }
 
     public void cleanup() {
-        Iterator iterator = pending.iterator();
-        while (iterator.hasNext()) {
-            HasCleanup object = (HasCleanup) iterator.next();
+        for (Object o : pending) {
+            HasCleanup object = (HasCleanup) o;
 
             try {
                 object.cleanup();


[groovy] 01/05: Minor refactoring: 'for' loop can be replaced with 'foreach'

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit d6765906874951e69647b1d42af98c8212e1f81a
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Nov 3 22:49:34 2019 +0800

    Minor refactoring: 'for' loop can be replaced with 'foreach'
---
 .../java/groovy/lang/BenchmarkInterceptor.java     |   6 +-
 src/main/java/groovy/lang/ExpandoMetaClass.java    |   5 +-
 src/main/java/groovy/lang/MetaClassImpl.java       |  28 +++---
 .../util/concurrentlinkedhashmap/Weighers.java     |   8 +-
 src/main/java/org/codehaus/groovy/antlr/Main.java  |  31 +++---
 .../groovy/ast/expr/ArgumentListExpression.java    |   3 +-
 .../codehaus/groovy/ast/tools/GenericsUtils.java   |   4 +-
 .../groovy/classgen/AsmClassGenerator.java         |  18 ++--
 .../codehaus/groovy/classgen/BytecodeSequence.java |   7 +-
 .../groovy/classgen/DummyClassGenerator.java       |   9 +-
 .../codehaus/groovy/classgen/asm/CompileStack.java |   9 +-
 .../groovy/classgen/asm/InvocationWriter.java      |  15 ++-
 .../codehaus/groovy/classgen/asm/MethodCaller.java |   3 +-
 .../groovy/reflection/CachedConstructor.java       |   3 +-
 .../groovy/runtime/EncodingGroovyMethods.java      |   4 +-
 .../groovy/runtime/ScriptBytecodeAdapter.java      |   4 +-
 .../runtime/metaclass/ConcurrentReaderHashMap.java | 108 ++++++++++-----------
 .../runtime/metaclass/MetaClassRegistryImpl.java   |   4 +-
 .../groovy/runtime/metaclass/MetaMethodIndex.java  |   4 +-
 .../java/org/codehaus/groovy/syntax/CSTNode.java   |  14 +--
 .../codehaus/groovy/tools/FileSystemCompiler.java  |   4 +-
 .../groovy/tools/javac/JavaStubGenerator.java      |   6 +-
 .../groovy/tools/shell/util/MessageSource.java     |  11 +--
 .../transform/AnnotationCollectorTransform.java    |   3 +-
 .../transform/stc/StaticTypeCheckingSupport.java   |   3 +-
 .../groovy/util/AbstractConcurrentMap.java         |  12 +--
 .../groovy/util/AbstractConcurrentMapBase.java     | 100 +++++++++----------
 .../groovy/util/ManagedConcurrentLinkedQueue.java  |   4 +-
 .../codehaus/groovy/vmplugin/v5/JUnit4Utils.java   |   6 +-
 .../v7/IndyGuardsFiltersAndSignatures.java         |   5 +-
 30 files changed, 199 insertions(+), 242 deletions(-)

diff --git a/src/main/java/groovy/lang/BenchmarkInterceptor.java b/src/main/java/groovy/lang/BenchmarkInterceptor.java
index 793286d..e289bda 100644
--- a/src/main/java/groovy/lang/BenchmarkInterceptor.java
+++ b/src/main/java/groovy/lang/BenchmarkInterceptor.java
@@ -107,14 +107,14 @@ public class BenchmarkInterceptor implements Interceptor {
      */
     public List statistic() {
         List result = new LinkedList();
-        for (Iterator iter = calls.keySet().iterator(); iter.hasNext();) {
+        for (Object o : calls.keySet()) {
             Object[] line = new Object[3];
             result.add(line);
-            line[0] = iter.next();
+            line[0] = o;
             List times = (List) calls.get(line[0]);
             line[1] = times.size() / 2;
             int accTime = 0;
-            for (Iterator it = times.iterator(); it.hasNext();) {
+            for (Iterator it = times.iterator(); it.hasNext(); ) {
                 Long start = (Long) it.next();
                 Long end = (Long) it.next();
                 accTime += end - start;
diff --git a/src/main/java/groovy/lang/ExpandoMetaClass.java b/src/main/java/groovy/lang/ExpandoMetaClass.java
index 42abd56..e3bdff7 100644
--- a/src/main/java/groovy/lang/ExpandoMetaClass.java
+++ b/src/main/java/groovy/lang/ExpandoMetaClass.java
@@ -49,7 +49,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -1060,8 +1059,8 @@ public class ExpandoMetaClass extends MetaClassImpl implements GroovyObject {
      * @param modifiedSuperExpandos A list of modified super ExpandoMetaClass
      */
     public void refreshInheritedMethods(Set modifiedSuperExpandos) {
-        for (Iterator i = modifiedSuperExpandos.iterator(); i.hasNext();) {
-            ExpandoMetaClass superExpando = (ExpandoMetaClass) i.next();
+        for (Object modifiedSuperExpando : modifiedSuperExpandos) {
+            ExpandoMetaClass superExpando = (ExpandoMetaClass) modifiedSuperExpando;
             if (superExpando != this) {
                 refreshInheritedMethods(superExpando);
             }
diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java
index 8cee0f2..94cb823 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -721,8 +721,8 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
                 } else {
                     arr = ((FastArray) answer).copy();
                 }
-                for (Iterator iter = used.iterator(); iter.hasNext(); ) {
-                    MetaMethod element = (MetaMethod) iter.next();
+                for (Object o : used) {
+                    MetaMethod element = (MetaMethod) o;
                     if (!element.getDeclaringClass().getTheClass().isAssignableFrom(sender))
                         continue;
                     filterMatchingMethodForCategory(arr, element);
@@ -1821,8 +1821,8 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
      */
     public void setProperties(Object bean, Map map) {
         checkInitalised();
-        for (Iterator iter = map.entrySet().iterator(); iter.hasNext(); ) {
-            Map.Entry entry = (Map.Entry) iter.next();
+        for (Object o : map.entrySet()) {
+            Map.Entry entry = (Map.Entry) o;
             String key = entry.getKey().toString();
 
             Object value = entry.getValue();
@@ -2116,8 +2116,8 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
     private static MetaMethod getCategoryMethodMissing(Class sender) {
         List possibleGenericMethods = GroovyCategorySupport.getCategoryMethods("methodMissing");
         if (possibleGenericMethods != null) {
-            for (Iterator iter = possibleGenericMethods.iterator(); iter.hasNext(); ) {
-                MetaMethod mmethod = (MetaMethod) iter.next();
+            for (Object possibleGenericMethod : possibleGenericMethods) {
+                MetaMethod mmethod = (MetaMethod) possibleGenericMethod;
                 if (!mmethod.getDeclaringClass().getTheClass().isAssignableFrom(sender))
                     continue;
 
@@ -2133,8 +2133,8 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
     private static MetaMethod getCategoryMethodGetter(Class sender, String name, boolean useLongVersion) {
         List possibleGenericMethods = GroovyCategorySupport.getCategoryMethods(name);
         if (possibleGenericMethods != null) {
-            for (Iterator iter = possibleGenericMethods.iterator(); iter.hasNext(); ) {
-                MetaMethod mmethod = (MetaMethod) iter.next();
+            for (Object possibleGenericMethod : possibleGenericMethods) {
+                MetaMethod mmethod = (MetaMethod) possibleGenericMethod;
                 if (!mmethod.getDeclaringClass().getTheClass().isAssignableFrom(sender))
                     continue;
 
@@ -2154,8 +2154,8 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
     private static MetaMethod getCategoryMethodSetter(Class sender, String name, boolean useLongVersion) {
         List possibleGenericMethods = GroovyCategorySupport.getCategoryMethods(name);
         if (possibleGenericMethods != null) {
-            for (Iterator iter = possibleGenericMethods.iterator(); iter.hasNext(); ) {
-                MetaMethod mmethod = (MetaMethod) iter.next();
+            for (Object possibleGenericMethod : possibleGenericMethods) {
+                MetaMethod mmethod = (MetaMethod) possibleGenericMethod;
                 if (!mmethod.getDeclaringClass().getTheClass().isAssignableFrom(sender))
                     continue;
 
@@ -2472,12 +2472,12 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
     }
 
     private void inheritStaticInterfaceFields(LinkedList superClasses, Set interfaces) {
-        for (Iterator interfaceIter = interfaces.iterator(); interfaceIter.hasNext(); ) {
-            CachedClass iclass = (CachedClass) interfaceIter.next();
+        for (Object anInterface : interfaces) {
+            CachedClass iclass = (CachedClass) anInterface;
             SingleKeyHashMap iPropertyIndex = classPropertyIndex.getNotNull(iclass);
             addFields(iclass, iPropertyIndex);
-            for (Iterator classIter = superClasses.iterator(); classIter.hasNext(); ) {
-                CachedClass sclass = (CachedClass) classIter.next();
+            for (Object superClass : superClasses) {
+                CachedClass sclass = (CachedClass) superClass;
                 if (!iclass.getTheClass().isAssignableFrom(sclass.getTheClass())) continue;
                 SingleKeyHashMap sPropertyIndex = classPropertyIndex.getNotNull(sclass);
                 copyNonPrivateFields(iPropertyIndex, sPropertyIndex, null);
diff --git a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java
index 6713c4a..1fb654a 100644
--- a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java
+++ b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java
@@ -17,7 +17,6 @@ package org.apache.groovy.util.concurrentlinkedhashmap;
 
 import java.io.Serializable;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -235,10 +234,9 @@ public final class Weighers {
         return ((Collection<?>) values).size();
       }
       int size = 0;
-      for (Iterator<?> i = values.iterator(); i.hasNext();) {
-        i.next();
-        size++;
-      }
+        for (Object value : values) {
+            size++;
+        }
       return size;
     }
   }
diff --git a/src/main/java/org/codehaus/groovy/antlr/Main.java b/src/main/java/org/codehaus/groovy/antlr/Main.java
index ae3bb5f..ca10099 100644
--- a/src/main/java/org/codehaus/groovy/antlr/Main.java
+++ b/src/main/java/org/codehaus/groovy/antlr/Main.java
@@ -46,33 +46,29 @@ class Main {
                 System.err.println("Parsing...");
 
                 // for each directory/file specified on the command line
-                for(int i=0; i< args.length;i++) {
-                    if ( args[i].equals("-showtree") ) {
+                for (String arg : args) {
+                    if (arg.equals("-showtree")) {
                         showTree = true;
                     }
                     //else if ( args[i].equals("-xml") ) {
                     //    xml = true;
                     //}
-                    else if ( args[i].equals("-verbose") ) {
+                    else if (arg.equals("-verbose")) {
                         verbose = true;
-                    }
-                    else if ( args[i].equals("-trace") ) {
+                    } else if (arg.equals("-trace")) {
                         GroovyRecognizer.tracing = true;
                         GroovyLexer.tracing = true;
-                    }
-                    else if ( args[i].equals("-traceParser") ) {
+                    } else if (arg.equals("-traceParser")) {
                         GroovyRecognizer.tracing = true;
-                    }
-                    else if ( args[i].equals("-traceLexer") ) {
+                    } else if (arg.equals("-traceLexer")) {
                         GroovyLexer.tracing = true;
+                    } else if (arg.equals("-whitespaceIncluded")) {
+                        whitespaceIncluded = true;
+                    } else {
+                        doFile(new File(arg)); // parse it
                     }
-                                        else if ( args[i].equals("-whitespaceIncluded") ) {
-                                            whitespaceIncluded = true;
-                                        }
-                                        else {
-                        doFile(new File(args[i])); // parse it
-                    }
-                } }
+                }
+            }
             else
                 System.err.println("Usage: java -jar groovyc.jar [-showtree] [-verbose] [-trace{,Lexer,Parser}]"+
                                    "<directory or file name>");
@@ -91,8 +87,7 @@ class Main {
         // If this is a directory, walk each file/dir in that directory
         if (f.isDirectory()) {
             String files[] = f.list();
-            for(int i=0; i < files.length; i++)
-                doFile(new File(f, files[i]));
+            for (String file : files) doFile(new File(f, file));
         }
 
         // otherwise, if this is a groovy file, parse it!
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java
index 0f4a7e4..a70fbed 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java
@@ -45,8 +45,7 @@ public class ArgumentListExpression extends TupleExpression {
     }
 
     public ArgumentListExpression(Parameter[] parameters) {
-        for (int i = 0; i < parameters.length; i++) {
-            Parameter parameter = parameters[i];
+        for (Parameter parameter : parameters) {
             addExpression(new VariableExpression(parameter));
         }
     }
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 3b715ff..0644ed9 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
@@ -650,8 +650,8 @@ public class GenericsUtils {
                 ClassNode[] newUpper = upper;
                 if (upper != null && upper.length > 0) {
                     ClassNode[] upperCorrected = new ClassNode[upper.length];
-                    for (int j = 0; j < upper.length; j++) {
-                        upperCorrected[i] = correctToGenericsSpecRecurse(genericsSpec, upper[j]);
+                    for (ClassNode classNode : upper) {
+                        upperCorrected[i] = correctToGenericsSpecRecurse(genericsSpec, classNode);
                     }
                     upper = upperCorrected;
                 }
diff --git a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
index 31719f5..2111e0a 100644
--- a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
@@ -414,9 +414,9 @@ public class AsmClassGenerator extends ClassGenerator {
 
         // Add parameter names to the MethodVisitor (jdk8+ only)
         if (getCompileUnit().getConfig().getParameters()) {
-            for (int i = 0; i < parameters.length; i++) {
+            for (Parameter parameter : parameters) {
                 // TODO handle ACC_SYNTHETIC for enum method parameters?
-                mv.visitParameter(parameters[i].getName(), 0);
+                mv.visitParameter(parameter.getName(), 0);
             }
         }
 
@@ -860,8 +860,8 @@ public class AsmClassGenerator extends ClassGenerator {
         } else {
             return arguments instanceof SpreadExpression;
         }
-        for (Iterator iter = args.iterator(); iter.hasNext();) {
-            if (iter.next() instanceof SpreadExpression) return true;
+        for (Object arg : args) {
+            if (arg instanceof SpreadExpression) return true;
         }
         return false;
     }
@@ -1600,8 +1600,7 @@ public class AsmClassGenerator extends ClassGenerator {
         mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
 
         int i = 0;
-        for (Iterator iter = entries.iterator(); iter.hasNext();) {
-            Object object = iter.next();
+        for (Object object : entries) {
             MapEntryExpression entry = (MapEntryExpression) object;
 
             mv.visitInsn(DUP);
@@ -1699,8 +1698,8 @@ public class AsmClassGenerator extends ClassGenerator {
         int size = 0;
         int dimensions = 0;
         if (sizeExpression != null) {
-            for (Iterator iter = sizeExpression.iterator(); iter.hasNext();) {
-                Expression element = (Expression) iter.next();
+            for (Object o : sizeExpression) {
+                Expression element = (Expression) o;
                 if (element == ConstantExpression.EMPTY_EXPRESSION) break;
                 dimensions++;
                 // let's convert to an int
@@ -1915,8 +1914,7 @@ public class AsmClassGenerator extends ClassGenerator {
         MethodVisitor mv = controller.getMethodVisitor();
         List instructions = bytecodeSequence.getInstructions();
         int mark = controller.getOperandStack().getStackLength();
-        for (Iterator iterator = instructions.iterator(); iterator.hasNext();) {
-            Object part = iterator.next();
+        for (Object part : instructions) {
             if (part instanceof EmptyExpression) {
                 mv.visitInsn(ACONST_NULL);
             } else if (part instanceof Expression) {
diff --git a/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java b/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java
index 7da3c4d..b70b855 100644
--- a/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java
+++ b/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java
@@ -23,7 +23,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 import org.codehaus.groovy.ast.stmt.Statement;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -66,10 +65,10 @@ public class BytecodeSequence extends Statement {
             gen.visitBytecodeSequence(this);
             return;
         }
-        for (Iterator iterator = instructions.iterator(); iterator.hasNext();) {
-            Object part = (Object) iterator.next();
+        for (BytecodeInstruction instruction : instructions) {
+            Object part = (Object) instruction;
             if (part instanceof ASTNode) {
-                ((ASTNode)part).visit(visitor);
+                ((ASTNode) part).visit(visitor);
             }
         }
     }
diff --git a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
index b85f91a..8b7e05d 100644
--- a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
@@ -34,8 +34,6 @@ import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
 
-import java.util.Iterator;
-
 /**
  * To generate a class that has all the fields and methods, except that fields are not initialized
  * and methods are empty. It's intended for being used as a place holder during code generation
@@ -84,8 +82,7 @@ public class DummyClassGenerator extends ClassGenerator {
 
             classNode.visitContents(this);
 
-            for (Iterator iter = innerClasses.iterator(); iter.hasNext();) {
-                ClassNode innerClass = (ClassNode) iter.next();
+            for (ClassNode innerClass : innerClasses) {
                 ClassNode innerClassType = innerClass;
                 String innerClassInternalName = BytecodeHelper.getClassInternalName(innerClassType);
                 String outerClassName = internalClassName; // default for inner classes
@@ -163,8 +160,8 @@ public class DummyClassGenerator extends ClassGenerator {
     }
 
     protected void visitParameters(ASTNode node, Parameter[] parameters) {
-        for (int i = 0, size = parameters.length; i < size; i++) {
-            visitParameter(node, parameters[i]);
+        for (Parameter parameter : parameters) {
+            visitParameter(node, parameter);
         }
     }
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java b/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java
index 5686b75..4bd54c4 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java
@@ -31,7 +31,6 @@ import org.objectweb.asm.Opcodes;
 
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
@@ -239,8 +238,8 @@ public class CompileStack implements Opcodes {
     private void setEndLabels(){
         Label endLabel = new Label();
         controller.getMethodVisitor().visitLabel(endLabel);
-        for (Iterator iter = stackVariables.values().iterator(); iter.hasNext();) {
-            BytecodeVariable var = (BytecodeVariable) iter.next();
+        for (Object o : stackVariables.values()) {
+            BytecodeVariable var = (BytecodeVariable) o;
             var.setEndLabel(endLabel);
         }
         thisEndLabel = endLabel;
@@ -365,8 +364,8 @@ public class CompileStack implements Opcodes {
                 mv.visitLocalVariable("this", className, null, thisStartLabel, thisEndLabel, 0);
             }
 
-            for (Iterator iterator = usedVariables.iterator(); iterator.hasNext();) {
-                BytecodeVariable v = (BytecodeVariable) iterator.next();
+            for (Object usedVariable : usedVariables) {
+                BytecodeVariable v = (BytecodeVariable) usedVariable;
                 ClassNode t = v.getType();
                 if (v.isHolder()) t = ClassHelper.REFERENCE_TYPE;
                 String type = BytecodeHelper.getTypeDescription(t);
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java
index c4a40ad..472f70a 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java
@@ -810,8 +810,8 @@ public class InvocationWriter {
         Label defaultLabel = new Label();
         Label afterSwitch = new Label();
         mv.visitLookupSwitchInsn(defaultLabel, indices, targets);
-        for (int i = 0; i < targets.length; i++) {
-            mv.visitLabel(targets[i]);
+        for (Label target : targets) {
+            mv.visitLabel(target);
             // to keep the stack height, we need to leave
             // one Object[] on the stack as last element. At the
             // same time, we need the Object[] on top of the stack
@@ -845,13 +845,13 @@ public class InvocationWriter {
             // vargs need special attention and transformation though
             Parameter[] parameters = cn.getParameters();
             int lengthWithoutVargs = parameters.length;
-            if (parameters.length>0 && parameters[parameters.length-1].getType().isArray()) {
+            if (parameters.length > 0 && parameters[parameters.length - 1].getType().isArray()) {
                 lengthWithoutVargs--;
             }
             for (int p = 0; p < lengthWithoutVargs; p++) {
                 loadAndCastElement(operandStack, mv, parameters, p);
             }
-            if (parameters.length>lengthWithoutVargs) {
+            if (parameters.length > lengthWithoutVargs) {
                 ClassNode type = parameters[lengthWithoutVargs].getType();
                 BytecodeHelper.pushConstant(mv, lengthWithoutVargs);
                 controller.getAcg().visitClassExpression(new ClassExpression(type));
@@ -907,12 +907,11 @@ public class InvocationWriter {
     // we match only on the number of arguments, not anything else
     private static ConstructorNode getMatchingConstructor(List<ConstructorNode> constructors, List<Expression> argumentList) {
         ConstructorNode lastMatch = null;
-        for (int i=0; i<constructors.size(); i++) {
-            ConstructorNode cn = constructors.get(i);
+        for (ConstructorNode cn : constructors) {
             Parameter[] params = cn.getParameters();
             // if number of parameters does not match we have no match
-            if (argumentList.size()!=params.length) continue;
-            if (lastMatch==null) {
+            if (argumentList.size() != params.length) continue;
+            if (lastMatch == null) {
                 lastMatch = cn;
             } else {
                 // we already had a match so we don't make a direct call at all
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java b/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java
index 9ebb34d..85fae66 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java
@@ -75,8 +75,7 @@ public class MethodCaller implements Opcodes {
 
     protected Method getMethod() {
         Method[] methods = theClass.getMethods();
-        for (int i = 0; i < methods.length; i++) {
-            Method method = methods[i];
+        for (Method method : methods) {
             if (method.getName().equals(name)) {
                 return method;
             }
diff --git a/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java b/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java
index cb43103..347b9b0 100644
--- a/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java
+++ b/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java
@@ -47,8 +47,7 @@ public class CachedConstructor extends ParameterTypes {
 
     public static CachedConstructor find(Constructor constructor) {
         CachedConstructor[] constructors = ReflectionCache.getCachedClass(constructor.getDeclaringClass()).getConstructors();
-        for (int i = 0; i < constructors.length; i++) {
-            CachedConstructor cachedConstructor = constructors[i];
+        for (CachedConstructor cachedConstructor : constructors) {
             if (cachedConstructor.cachedConstructor.equals(constructor))
                 return cachedConstructor;
         }
diff --git a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
index d41f04e..2d4ba4f 100644
--- a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
@@ -317,9 +317,9 @@ public class EncodingGroovyMethods {
     public static Writable encodeHex(final byte[] data) {
         return new Writable() {
             public Writer writeTo(Writer out) throws IOException {
-                for (int i = 0; i < data.length; i++) {
+                for (byte datum : data) {
                     // convert byte into unsigned hex string
-                    String hexString = Integer.toHexString(data[i] & 0xFF);
+                    String hexString = Integer.toHexString(datum & 0xFF);
 
                     // add leading zero if the length of the string is one
                     if (hexString.length() < 2) {
diff --git a/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java b/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
index df1a4c4..69cd50f 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
@@ -799,8 +799,8 @@ public class ScriptBytecodeAdapter {
         List ret = new ArrayList();
         int argsPos = 0;
         int spreadPos = 0;
-        for (int pos = 0; pos < positions.length; pos++) {
-            for (; argsPos < positions[pos]; argsPos++) {
+        for (int position : positions) {
+            for (; argsPos < position; argsPos++) {
                 ret.add(args[argsPos]);
             }
             Object value = spreads[spreadPos];
diff --git a/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java b/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java
index 560cf97..86277db 100644
--- a/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java
+++ b/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java
@@ -572,42 +572,40 @@ public class ConcurrentReaderHashMap
      * reader thread that may be in the midst of traversing table
      * right now.)
      */
-    
-    for (int i = 0; i < oldCapacity ; i++) {
-      // We need to guarantee that any existing reads of old Map can
-      // proceed. So we cannot yet null out each bin.
-      Entry e = oldTable[i];
-      
-      if (e != null) {
-        int idx = e.hash & mask;
-        Entry next = e.next;
-        
-        //  Single node on list
-        if (next == null) 
-          newTable[idx] = e;
-        
-        else {    
-          // Reuse trailing consecutive sequence of all same bit
-          Entry lastRun = e;
-          int lastIdx = idx;
-          for (Entry last = next; last != null; last = last.next) {
-            int k = last.hash & mask;
-            if (k != lastIdx) {
-              lastIdx = k;
-              lastRun = last;
-            }
-          }
-          newTable[lastIdx] = lastRun;
-          
-          // Clone all remaining nodes
-          for (Entry p = e; p != lastRun; p = p.next) {
-            int k = p.hash & mask;
-            newTable[k] = new Entry(p.hash, p.key, 
-                                    p.value, newTable[k]);
+
+      for (Entry e : oldTable) {
+          // We need to guarantee that any existing reads of old Map can
+          // proceed. So we cannot yet null out each bin.
+          if (e != null) {
+              int idx = e.hash & mask;
+              Entry next = e.next;
+
+              //  Single node on list
+              if (next == null)
+                  newTable[idx] = e;
+
+              else {
+                  // Reuse trailing consecutive sequence of all same bit
+                  Entry lastRun = e;
+                  int lastIdx = idx;
+                  for (Entry last = next; last != null; last = last.next) {
+                      int k = last.hash & mask;
+                      if (k != lastIdx) {
+                          lastIdx = k;
+                          lastRun = last;
+                      }
+                  }
+                  newTable[lastIdx] = lastRun;
+
+                  // Clone all remaining nodes
+                  for (Entry p = e; p != lastRun; p = p.next) {
+                      int k = p.hash & mask;
+                      newTable[k] = new Entry(p.hash, p.key,
+                              p.value, newTable[k]);
+                  }
+              }
           }
-        }
       }
-    }
 
     table = newTable;
     recordModification(newTable);
@@ -716,12 +714,12 @@ public class ConcurrentReaderHashMap
     if (value == null) throw new NullPointerException();
 
     Entry tab[] = getTableForReading();
-    
-    for (int i = 0 ; i < tab.length; ++i) {
-      for (Entry e = tab[i] ; e != null ; e = e.next) 
-        if (value.equals(e.value))
-          return true;
-    }
+
+      for (Entry entry : tab) {
+          for (Entry e = entry; e != null; e = e.next)
+              if (value.equals(e.value))
+                  return true;
+      }
 
     return false;
   }
@@ -768,12 +766,12 @@ public class ConcurrentReaderHashMap
     while (n >= threshold)
       rehash();
 
-    for (Iterator it = t.entrySet().iterator(); it.hasNext();) {
-      Map.Entry entry = (Map.Entry) it.next();
-      Object key = entry.getKey();
-      Object value = entry.getValue();
-      put(key, value);
-    }
+      for (Object o : t.entrySet()) {
+          Map.Entry entry = (Map.Entry) o;
+          Object key = entry.getKey();
+          Object value = entry.getValue();
+          put(key, value);
+      }
   }
 
 
@@ -868,14 +866,12 @@ public class ConcurrentReaderHashMap
     }
     public Object[] toArray() {
       Collection c = new ArrayList();
-      for (Iterator i = iterator(); i.hasNext(); )
-          c.add(i.next());
+        for (Object o : this) c.add(o);
       return c.toArray();
     }
     public Object[] toArray(Object[] a) {
       Collection c = new ArrayList();
-      for (Iterator i = iterator(); i.hasNext(); )
-          c.add(i.next());
+        for (Object o : this) c.add(o);
       return c.toArray(a);
     }
   }
@@ -911,14 +907,12 @@ public class ConcurrentReaderHashMap
     }
     public Object[] toArray() {
       Collection c = new ArrayList();
-      for (Iterator i = iterator(); i.hasNext(); )
-          c.add(i.next());
+        for (Object o : this) c.add(o);
       return c.toArray();
     }
     public Object[] toArray(Object[] a) {
       Collection c = new ArrayList();
-      for (Iterator i = iterator(); i.hasNext(); )
-          c.add(i.next());
+        for (Object o : this) c.add(o);
       return c.toArray(a);
     }
   }
@@ -964,14 +958,12 @@ public class ConcurrentReaderHashMap
     }
     public Object[] toArray() {
       Collection c = new ArrayList();
-      for (Iterator i = iterator(); i.hasNext(); )
-          c.add(i.next());
+        for (Object o : this) c.add(o);
       return c.toArray();
     }
     public Object[] toArray(Object[] a) {
       Collection c = new ArrayList();
-      for (Iterator i = iterator(); i.hasNext(); )
-          c.add(i.next());
+        for (Object o : this) c.add(o);
       return c.toArray(a);
     }
   }
diff --git a/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl.java b/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl.java
index 5edca84..791323d 100644
--- a/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl.java
+++ b/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl.java
@@ -389,8 +389,8 @@ public class MetaClassRegistryImpl implements MetaClassRegistry{
     protected void fireConstantMetaClassUpdate(Object obj, Class c, final MetaClass oldMC, MetaClass newMc) {
         MetaClassRegistryChangeEventListener[]  listener = getMetaClassRegistryChangeEventListeners();
         MetaClassRegistryChangeEvent cmcu = new MetaClassRegistryChangeEvent(this, obj, c, oldMC, newMc);
-        for (int i = 0; i<listener.length; i++) {
-            listener[i].updateConstantMetaClass(cmcu);
+        for (MetaClassRegistryChangeEventListener metaClassRegistryChangeEventListener : listener) {
+            metaClassRegistryChangeEventListener.updateConstantMetaClass(cmcu);
         }
     }
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaMethodIndex.java b/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaMethodIndex.java
index b70b344..e1ca0f8 100644
--- a/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaMethodIndex.java
+++ b/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaMethodIndex.java
@@ -487,8 +487,8 @@ public class MetaMethodIndex {
         Entry[] table = this.table;
         int length = table.length;
 
-        for (int j = 0; j < length; j++) {
-            for (Entry e = table[j]; e != null; e = e.nextHashEntry) {
+        for (Entry entry : table) {
+            for (Entry e = entry; e != null; e = e.nextHashEntry) {
                 if (e.methods instanceof FastArray)
                     e.methodsForSuper = ((FastArray) e.methods).copy();
                 else
diff --git a/src/main/java/org/codehaus/groovy/syntax/CSTNode.java b/src/main/java/org/codehaus/groovy/syntax/CSTNode.java
index 631c8ed..e074681 100644
--- a/src/main/java/org/codehaus/groovy/syntax/CSTNode.java
+++ b/src/main/java/org/codehaus/groovy/syntax/CSTNode.java
@@ -85,8 +85,8 @@ public abstract class CSTNode {
      */
     public boolean isOneOf(int[] types) {
         int meaning = getMeaning();
-        for (int i = 0; i < types.length; i++) {
-            if (Types.ofType(meaning, types[i])) {
+        for (int type : types) {
+            if (Types.ofType(meaning, type)) {
                 return true;
             }
         }
@@ -99,8 +99,8 @@ public abstract class CSTNode {
      */
     public boolean isAllOf(int[] types) {
         int meaning = getMeaning();
-        for (int i = 0; i < types.length; i++) {
-            if (!Types.ofType(meaning, types[i])) {
+        for (int type : types) {
+            if (!Types.ofType(meaning, type)) {
                 return false;
             }
         }
@@ -114,9 +114,9 @@ public abstract class CSTNode {
      */
     public int getMeaningAs(int[] types) {
 
-        for (int i = 0; i < types.length; i++) {
-            if (isA(types[i])) {
-                return types[i];
+        for (int type : types) {
+            if (isA(type)) {
+                return type;
             }
         }
 
diff --git a/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java b/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java
index 2c02e86..39e103f 100644
--- a/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java
+++ b/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java
@@ -299,8 +299,8 @@ public class FileSystemCompiler {
             file.delete();
         } else if (file.isDirectory()) {
             File[] files = file.listFiles();
-            for (int i = 0; i < files.length; i++) {
-                deleteRecursive(files[i]);
+            for (File value : files) {
+                deleteRecursive(value);
             }
             file.delete();
         }
diff --git a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
index 3fec399..2510ff0 100644
--- a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
+++ b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
@@ -611,9 +611,9 @@ public class JavaStubGenerator {
 
 
         // if all remaining exceptions are used in the stub we are good
-        outer: for (int i=0; i<superExceptions.length; i++) {
-            ClassNode superExc = superExceptions[i];
-            for (ClassNode stub:stubExceptions) {
+        outer:
+        for (ClassNode superExc : superExceptions) {
+            for (ClassNode stub : stubExceptions) {
                 if (stub.isDerivedFrom(superExc)) continue outer;
             }
             // not found
diff --git a/src/main/java/org/codehaus/groovy/tools/shell/util/MessageSource.java b/src/main/java/org/codehaus/groovy/tools/shell/util/MessageSource.java
index 1797043..82f5e6a 100644
--- a/src/main/java/org/codehaus/groovy/tools/shell/util/MessageSource.java
+++ b/src/main/java/org/codehaus/groovy/tools/shell/util/MessageSource.java
@@ -97,16 +97,15 @@ public class MessageSource
         MissingResourceException error = null;
         
         ResourceBundle[] bundles = getBundles();
-        
-        for (int i=0; i<bundles.length; i++) {
+
+        for (ResourceBundle bundle : bundles) {
             try {
-                return bundles[i].getString(code);
-            }
-            catch (MissingResourceException e) {
+                return bundle.getString(code);
+            } catch (MissingResourceException e) {
                 //
                 // FIXME: For now just save the first error, should really roll a new message with all of the details
                 //
-                
+
                 if (error != null) {
                     error = e;
                 }
diff --git a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
index e256fc0..efe75e7 100644
--- a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
+++ b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
@@ -97,8 +97,7 @@ public class AnnotationCollectorTransform {
          */
         public void transformClass(ClassNode cn) {
             AnnotationNode collector = null;
-            for (ListIterator<AnnotationNode> it = cn.getAnnotations().listIterator(); it.hasNext(); ) {
-                AnnotationNode an = it.next();
+            for (AnnotationNode an : cn.getAnnotations()) {
                 if (an.getClassNode().getName().equals(AnnotationCollector.class.getName())) {
                     collector = an;
                     break;
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index dd74327..f27988a 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -978,8 +978,7 @@ public abstract class StaticTypeCheckingSupport {
         if (c.equals(interfaceClass)) return 0;
         ClassNode[] interfaces = c.getInterfaces();
         int max = -1;
-        for (int i = 0; i < interfaces.length; i++) {
-            final ClassNode anInterface = interfaces[i];
+        for (final ClassNode anInterface : interfaces) {
             int sub = getMaximumInterfaceDistance(anInterface, interfaceClass);
             // we need to keep the -1 to track the mismatch, a +1
             // by any means could let it look like a direct match
diff --git a/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMap.java b/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMap.java
index c341326..3fbf8e0 100644
--- a/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMap.java
+++ b/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMap.java
@@ -68,8 +68,8 @@ public abstract class AbstractConcurrentMap<K, V> extends AbstractConcurrentMapB
                 }
                 else {
                     Object arr [] = (Object[]) o;
-                    for (int i = 0; i < arr.length; i++) {
-                        Entry<K,V> e = (Entry<K,V>) arr[i];
+                    for (Object value : arr) {
+                        Entry<K, V> e = (Entry<K, V>) value;
                         if (e != null && e.isEqual(key, hash)) {
                             return e.getValue();
                         }
@@ -91,8 +91,8 @@ public abstract class AbstractConcurrentMap<K, V> extends AbstractConcurrentMapB
                 }
                 else {
                     Object arr [] = (Object[]) o;
-                    for (int i = 0; i < arr.length; i++) {
-                        Entry<K,V> e = (Entry<K,V>) arr[i];
+                    for (Object item : arr) {
+                        Entry<K, V> e = (Entry<K, V>) item;
                         if (e != null && e.isEqual(key, hash)) {
                             return e;
                         }
@@ -129,8 +129,8 @@ public abstract class AbstractConcurrentMap<K, V> extends AbstractConcurrentMapB
                     }
                     else {
                         Object arr [] = (Object[]) o;
-                        for (int i = 0; i < arr.length; i++) {
-                            Entry e = (Entry) arr[i];
+                        for (Object item : arr) {
+                            Entry e = (Entry) item;
                             if (e != null && e.isEqual(key, hash)) {
                                 e.setValue(value);
                                 return e;
diff --git a/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java b/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java
index f0625f6..500e3d4 100644
--- a/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java
+++ b/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java
@@ -68,24 +68,22 @@ public abstract class AbstractConcurrentMapBase {
 
     public int fullSize() {
         int count = 0;
-        for (int i = 0; i < segments.length; i++) {
-            segments[i].lock();
+        for (Segment segment : segments) {
+            segment.lock();
             try {
-                for (int j = 0; j < segments[i].table.length; j++) {
-                    Object o = segments[i].table [j];
+                for (int j = 0; j < segment.table.length; j++) {
+                    Object o = segment.table[j];
                     if (o != null) {
                         if (o instanceof Entry) {
                             count++;
-                        }
-                        else {
-                            Object arr [] = (Object[]) o;
+                        } else {
+                            Object arr[] = (Object[]) o;
                             count += arr.length;
                         }
                     }
                 }
-            }
-            finally {
-                segments[i].unlock();
+            } finally {
+                segment.unlock();
             }
         }
         return count;
@@ -93,30 +91,28 @@ public abstract class AbstractConcurrentMapBase {
 
     public int size() {
         int count = 0;
-        for (int i = 0; i < segments.length; i++) {
-            segments[i].lock();
+        for (Segment segment : segments) {
+            segment.lock();
             try {
-                for (int j = 0; j < segments[i].table.length; j++) {
-                    Object o = segments[i].table [j];
+                for (int j = 0; j < segment.table.length; j++) {
+                    Object o = segment.table[j];
                     if (o != null) {
                         if (o instanceof Entry) {
                             Entry e = (Entry) o;
                             if (e.isValid())
-                              count++;
-                        }
-                        else {
-                            Object arr [] = (Object[]) o;
-                            for (int k = 0; k < arr.length; k++) {
-                                Entry info = (Entry) arr[k];
+                                count++;
+                        } else {
+                            Object arr[] = (Object[]) o;
+                            for (Object value : arr) {
+                                Entry info = (Entry) value;
                                 if (info != null && info.isValid())
                                     count++;
                             }
                         }
                     }
                 }
-            }
-            finally {
-                segments[i].unlock();
+            } finally {
+                segment.unlock();
             }
         }
         return count;
@@ -124,30 +120,28 @@ public abstract class AbstractConcurrentMapBase {
 
     public Collection values() {
         Collection result = new LinkedList();
-        for (int i = 0; i < segments.length; i++) {
-            segments[i].lock();
+        for (Segment segment : segments) {
+            segment.lock();
             try {
-                for (int j = 0; j < segments[i].table.length; j++) {
-                    Object o = segments[i].table [j];
+                for (int j = 0; j < segment.table.length; j++) {
+                    Object o = segment.table[j];
                     if (o != null) {
                         if (o instanceof Entry) {
                             Entry e = (Entry) o;
                             if (e.isValid())
-                              result.add(e);
-                        }
-                        else {
-                            Object arr [] = (Object[]) o;
-                            for (int k = 0; k < arr.length; k++) {
-                                Entry info = (Entry) arr[k];
+                                result.add(e);
+                        } else {
+                            Object arr[] = (Object[]) o;
+                            for (Object value : arr) {
+                                Entry info = (Entry) value;
                                 if (info != null && info.isValid())
                                     result.add(info);
                             }
                         }
                     }
                 }
-            }
-            finally {
-                segments[i].unlock();
+            } finally {
+                segment.unlock();
             }
         }
         return result;
@@ -187,19 +181,17 @@ public abstract class AbstractConcurrentMapBase {
                     else {
                         Object arr [] = (Object[]) o;
                         Object res = null;
-                        for (int i = 0; i < arr.length; i++) {
-                            Entry info = (Entry) arr[i];
+                        for (Object value : arr) {
+                            Entry info = (Entry) value;
                             if (info != null) {
-                                if(info != e) {
-                                  if (info.isValid()) {
-                                     res = put(info, res);
-                                  }
-                                  else {
-                                      newCount--;
-                                  }
-                                }
-                                else {
-                                  newCount--;
+                                if (info != e) {
+                                    if (info.isValid()) {
+                                        res = put(info, res);
+                                    } else {
+                                        newCount--;
+                                    }
+                                } else {
+                                    newCount--;
                                 }
                             }
                         }
@@ -261,8 +253,7 @@ public abstract class AbstractConcurrentMapBase {
             Object[] newTable = new Object[newCount+1 < threshold ? oldCapacity : oldCapacity << 1];
             int sizeMask = newTable.length - 1;
             newCount = 0;
-            for (int i = 0; i < oldCapacity ; i++) {
-                Object o = oldTable[i];
+            for (Object o : oldTable) {
                 if (o != null) {
                     if (o instanceof Entry) {
                         Entry e = (Entry) o;
@@ -271,11 +262,10 @@ public abstract class AbstractConcurrentMapBase {
                             put(e, index, newTable);
                             newCount++;
                         }
-                    }
-                    else {
-                        Object arr [] = (Object[]) o;
-                        for (int j = 0; j < arr.length; j++) {
-                            Entry e = (Entry) arr[j];
+                    } else {
+                        Object arr[] = (Object[]) o;
+                        for (Object value : arr) {
+                            Entry e = (Entry) value;
                             if (e != null && e.isValid()) {
                                 int index = e.getHash() & sizeMask;
                                 put(e, index, newTable);
diff --git a/src/main/java/org/codehaus/groovy/util/ManagedConcurrentLinkedQueue.java b/src/main/java/org/codehaus/groovy/util/ManagedConcurrentLinkedQueue.java
index ab98f72..ea697c2 100644
--- a/src/main/java/org/codehaus/groovy/util/ManagedConcurrentLinkedQueue.java
+++ b/src/main/java/org/codehaus/groovy/util/ManagedConcurrentLinkedQueue.java
@@ -91,8 +91,8 @@ public class ManagedConcurrentLinkedQueue<T> implements Iterable<T> {
      */
     public List<T> values() {
         List<T> result = new ArrayList<T>();
-        for (Iterator<T> itr = iterator(); itr.hasNext(); ) {
-            result.add(itr.next());
+        for (T t : this) {
+            result.add(t);
         }
         return result;
     }
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v5/JUnit4Utils.java b/src/main/java/org/codehaus/groovy/vmplugin/v5/JUnit4Utils.java
index 621bc39..10ce200 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v5/JUnit4Utils.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v5/JUnit4Utils.java
@@ -54,8 +54,7 @@ public class JUnit4Utils {
                 } else {
                     Class testAnnotationClass = loader.loadClass("org.junit.Test");
                     Method[] methods = scriptClass.getMethods();
-                    for (int i = 0; i < methods.length; i++) {
-                        Method method = methods[i];
+                    for (Method method : methods) {
                         annotation = method.getAnnotation(testAnnotationClass);
                         if (annotation != null) {
                             isTest = true;
@@ -89,8 +88,7 @@ public class JUnit4Utils {
             System.out.print(", Failures: " + InvokerHelper.getProperty(result, "failureCount"));
             System.out.println(", Time: " + InvokerHelper.getProperty(result, "runTime"));
             List failures = (List) InvokerHelper.getProperty(result, "failures");
-            for (int i = 0; i < failures.size(); i++) {
-                Object f = failures.get(i);
+            for (Object f : failures) {
                 System.out.println("Test Failure: " + InvokerHelper.getProperty(f, "description"));
                 System.out.println(InvokerHelper.getProperty(f, "trace"));
             }
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyGuardsFiltersAndSignatures.java b/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyGuardsFiltersAndSignatures.java
index d86bcfd..2cffc58 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyGuardsFiltersAndSignatures.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyGuardsFiltersAndSignatures.java
@@ -43,7 +43,6 @@ import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 
 import static org.codehaus.groovy.vmplugin.v7.IndyInterface.LOOKUP;
@@ -131,8 +130,8 @@ public class IndyGuardsFiltersAndSignatures {
      * with property map.
      */
     public static Object setBeanProperties(MetaClass mc, Object bean, Map properties) {
-        for (Iterator iter = properties.entrySet().iterator(); iter.hasNext();) {
-            Map.Entry entry = (Map.Entry) iter.next();
+        for (Object o : properties.entrySet()) {
+            Map.Entry entry = (Map.Entry) o;
             String key = entry.getKey().toString();
 
             Object value = entry.getValue();