mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java-intentions] ReplaceIteratorForEachLoopWithIteratorForLoopFix: support 'var'
Fixes EA-745826 - IOE: JavaParserUtil.parseFragment GitOrigin-RevId: 08296c2f0b06ccaf87ad637155a97e3b5bfe8f99
This commit is contained in:
committed by
intellij-monorepo-bot
parent
728b103169
commit
0d121391d5
+6
-4
@@ -29,7 +29,6 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.siyeh.ig.psiutils.VariableNameGenerator;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Pavel.Dolgov
|
||||
@@ -89,7 +88,7 @@ public final class ReplaceIteratorForEachLoopWithIteratorForLoopFix implements I
|
||||
final String name = new VariableNameGenerator(myStatement, VariableKind.LOCAL_VARIABLE)
|
||||
.byName("it", "iter", "iterator").generate(true);
|
||||
PsiForStatement newForLoop = (PsiForStatement)elementFactory.createStatementFromText(
|
||||
"for (Iterator " + name + " = initializer; " + name + ".hasNext();) { Object next = " + name + ".next(); }", myStatement);
|
||||
"for (Iterator " + name + " = initializer; " + name + ".hasNext();) { var next = " + name + ".next(); }", myStatement);
|
||||
|
||||
final PsiDeclarationStatement newDeclaration = (PsiDeclarationStatement)newForLoop.getInitialization();
|
||||
if (newDeclaration == null) return;
|
||||
@@ -104,8 +103,11 @@ public final class ReplaceIteratorForEachLoopWithIteratorForLoopFix implements I
|
||||
|
||||
final PsiDeclarationStatement newFirstStatement = (PsiDeclarationStatement)newBodyBlock.getStatements()[0];
|
||||
final PsiLocalVariable newItemVariable = (PsiLocalVariable)newFirstStatement.getDeclaredElements()[0];
|
||||
final PsiTypeElement newItemTypeElement = elementFactory.createTypeElement(iterationParameter.getType());
|
||||
newItemVariable.getTypeElement().replace(newItemTypeElement);
|
||||
PsiTypeElement typeElement = iterationParameter.getTypeElement();
|
||||
if (typeElement == null || !typeElement.isInferredType()) {
|
||||
final PsiTypeElement newItemTypeElement = elementFactory.createTypeElement(iterationParameter.getType());
|
||||
newItemVariable.getTypeElement().replace(newItemTypeElement);
|
||||
}
|
||||
newItemVariable.setName(iterationParameterName);
|
||||
final CodeStyleSettings codeStyleSettings = CodeStyle.getSettings(file);
|
||||
if (codeStyleSettings.getCustomSettings(JavaCodeStyleSettings.class).GENERATE_FINAL_LOCALS) {
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// "Replace 'for each' loop with iterator 'for' loop" "true-preview"
|
||||
import java.util.Iterator;
|
||||
|
||||
class X {
|
||||
void test(Iterator<?> it) {
|
||||
for (Iterator<?> iter = it; iter.hasNext(); ) {
|
||||
var x = iter.next();
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// "Replace 'for each' loop with iterator 'for' loop" "true-preview"
|
||||
import java.util.Iterator;
|
||||
|
||||
class X {
|
||||
void test(Iterator<?> it) {
|
||||
for (var x : i<caret>t) {
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user