Skip to content

Commit 7c82677

Browse files
authored
Fix iterator to enhanced for loop to properly remove Iterator import (#2757)
* Fix iterator to enhanced for loop to properly remove Iterator import - modify UseIteratorToForLoopCleanUpCore to request a frest AST - add new test to CleanUpTest1d8 - fixes #121
1 parent 260179e commit 7c82677

File tree

2 files changed

+49
-2
lines changed

2 files changed

+49
-2
lines changed

org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/ui/fix/UseIteratorToForLoopCleanUpCore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public UseIteratorToForLoopCleanUpCore() {
4848

4949
@Override
5050
public CleanUpRequirements getRequirements() {
51-
return new CleanUpRequirements(requireAST(), false, false, null);
51+
return new CleanUpRequirements(requireAST(), requireAST(), false, null);
5252
}
5353

5454
public boolean requireAST() {

org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d8.java

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5440,6 +5440,54 @@ private static <K, V> List<V> m(Map<K, List<V>> map) {
54405440
new HashSet<>(Arrays.asList(FixMessages.Java50Fix_ConvertToEnhancedForLoop_description)));
54415441
}
54425442

5443+
/**
5444+
* https://github.com/eclipse-jdt/eclipse.jdt.ui/issues/121
5445+
*/
5446+
@Test
5447+
public void testWhileIssue121() throws CoreException {
5448+
IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
5449+
String sample= """
5450+
package test;
5451+
import java.util.Date;
5452+
import java.util.Iterator;
5453+
import java.util.List;
5454+
import java.util.Map;
5455+
public class Test {
5456+
private void method(List<String> list, Map<Date, List<String>> map) {
5457+
Iterator<String> removed = list.iterator();
5458+
while (removed.hasNext()) {
5459+
System.out.println(removed.next());
5460+
}
5461+
for (Iterator<List<String>> value = map.values().iterator(); value.hasNext();) {
5462+
System.out.println(value.next());
5463+
}
5464+
}
5465+
}
5466+
""";
5467+
ICompilationUnit cu= pack.createCompilationUnit("Test.java", sample, false, null);
5468+
5469+
enable(CleanUpConstants.CONTROL_STATEMENTS_CONVERT_FOR_LOOP_TO_ENHANCED);
5470+
5471+
String expected= """
5472+
package test;
5473+
import java.util.Date;
5474+
import java.util.List;
5475+
import java.util.Map;
5476+
public class Test {
5477+
private void method(List<String> list, Map<Date, List<String>> map) {
5478+
for (String element : list) {
5479+
System.out.println(element);
5480+
}
5481+
for (List<String> list2 : map.values()) {
5482+
System.out.println(list2);
5483+
}
5484+
}
5485+
}
5486+
""";
5487+
assertRefactoringResultAsExpected(new ICompilationUnit[] { cu }, new String[] { expected },
5488+
new HashSet<>(Arrays.asList(FixMessages.Java50Fix_ConvertToEnhancedForLoop_description)));
5489+
}
5490+
54435491
/**
54445492
* https://github.com/eclipse-jdt/eclipse.jdt.ui/issues/190
54455493
*/
@@ -5607,7 +5655,6 @@ private static void dumpIMethod(String next) {
56075655
String expected= """
56085656
package test;
56095657
import java.io.File;
5610-
import java.util.Iterator;
56115658
import java.util.List;
56125659
56135660
public class Test {

0 commit comments

Comments
 (0)