mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
while -> foreach: expand var when no appropriate initializer is found IDEA-193830
This commit is contained in:
@@ -42,6 +42,7 @@ import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.DebugUtil;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.stubs.StubTextInconsistencyException;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -247,7 +248,11 @@ public class PsiTestUtil {
|
||||
private static PsiFile createDummyCopy(PsiFile file) {
|
||||
LightVirtualFile copy = new LightVirtualFile(file.getName(), file.getText());
|
||||
copy.setOriginalFile(file.getViewProvider().getVirtualFile());
|
||||
return Objects.requireNonNull(file.getManager().findFile(copy));
|
||||
PsiFile dummyCopy = Objects.requireNonNull(file.getManager().findFile(copy));
|
||||
if (dummyCopy instanceof PsiFileImpl) {
|
||||
((PsiFileImpl)dummyCopy).setOriginalFile(file);
|
||||
}
|
||||
return dummyCopy;
|
||||
}
|
||||
|
||||
public static void checkPsiMatchesTextIgnoringNonCode(PsiFile file) {
|
||||
|
||||
+11
-1
@@ -21,6 +21,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.Query;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
@@ -136,7 +137,16 @@ public class WhileCanBeForeachInspection extends WhileCanBeForeachInspectionBase
|
||||
break;
|
||||
}
|
||||
final PsiExpression expression = assignment.getRExpression();
|
||||
initializer.delete();
|
||||
PsiTypeElement typeElement = iterator.getTypeElement();
|
||||
if (typeElement.isInferredType() &&
|
||||
(expression == null ||
|
||||
PsiType.NULL.equals(expression.getType()) ||
|
||||
expression instanceof PsiArrayInitializerExpression ||
|
||||
expression instanceof PsiFunctionalExpression) &&
|
||||
PsiTypesUtil.replaceWithExplicitType(typeElement) == null) {
|
||||
deleteIterator = false;
|
||||
break;
|
||||
}
|
||||
iterator.setInitializer(expression);
|
||||
final PsiElement statement = assignment.getParent();
|
||||
final PsiElement lastChild = statement.getLastChild();
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import java.util.List;
|
||||
|
||||
class MyTest {
|
||||
void test(List<? extends String> list) {
|
||||
fo<caret>r (String aList: list) {
|
||||
System.out.println(aList);
|
||||
}
|
||||
var it = list.iterator();
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import java.util.List;
|
||||
|
||||
class MyTest {
|
||||
void test(List<? extends String> list) {
|
||||
var it = list.iterator();
|
||||
wh<caret>ile(it.hasNext()) {
|
||||
System.out.println(it.next());
|
||||
}
|
||||
it = list.iterator();
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
class MyTest {
|
||||
void test(List<? extends String> list) {
|
||||
fo<caret>r (String aList: list) {
|
||||
System.out.println(aList);
|
||||
}
|
||||
Iterator<? extends String> it = null;
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import java.util.List;
|
||||
|
||||
class MyTest {
|
||||
void test(List<? extends String> list) {
|
||||
var it = list.iterator();
|
||||
wh<caret>ile(it.hasNext()) {
|
||||
System.out.println(it.next());
|
||||
}
|
||||
it = null;
|
||||
}
|
||||
}
|
||||
+9
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.siyeh.ig.fixes.migration;
|
||||
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.IGQuickFixesTestCase;
|
||||
import com.siyeh.ig.migration.WhileCanBeForeachInspection;
|
||||
@@ -31,6 +33,13 @@ public class WhileCanBeForeachFixTest extends IGQuickFixesTestCase {
|
||||
public void testCast() { doTest(); }
|
||||
public void testNakedNext() { doTest(); }
|
||||
public void testUnboundWildcard() { doTest(); }
|
||||
public void testVarWithoutValidInitializer() { doTest(); }
|
||||
public void testVarWithValidInitializer() { doTest(); }
|
||||
|
||||
@Override
|
||||
protected void tuneFixture(JavaModuleFixtureBuilder builder) {
|
||||
builder.setLanguageLevel(LanguageLevel.HIGHEST);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getRelativePath() {
|
||||
|
||||
Reference in New Issue
Block a user