Java inspection: don't offer "Make Type Generic" inspection at variable initializer (IDEA-157727)

This commit is contained in:
Pavel Dolgov
2016-06-28 18:04:59 +03:00
parent 57cf830d55
commit eca5f9ad13
3 changed files with 19 additions and 2 deletions
@@ -18,6 +18,7 @@ package com.intellij.codeInspection.miscGenerics;
import com.intellij.codeInspection.*;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.TypeConversionUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -42,7 +43,14 @@ public class MakeTypeGenericInspection extends BaseJavaBatchLocalInspectionTool
final String typeText = type.getCanonicalText();
final String message =
InspectionsBundle.message("inspection.raw.variable.type.make.generic.text", variable.getName(), typeText);
holder.registerProblem(variable, message, new MyLocalQuickFix(message));
final PsiElement beforeInitializer =
PsiTreeUtil.skipSiblingsBackward(variable.getInitializer(), PsiWhiteSpace.class, PsiComment.class);
final ProblemDescriptor descriptor =
holder.getManager().createProblemDescriptor(variable.getTypeElement(),
beforeInitializer != null ? beforeInitializer : variable.getTypeElement(),
message, ProblemHighlightType.GENERIC_ERROR_OR_WARNING,
isOnTheFly, new MyLocalQuickFix(message));
holder.registerProblem(descriptor);
}
}
}
@@ -96,7 +104,7 @@ public class MakeTypeGenericInspection extends BaseJavaBatchLocalInspectionTool
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
final PsiElement element = descriptor.getPsiElement();
final PsiElement element = descriptor.getStartElement().getParent();
if (element instanceof PsiVariable) {
final PsiVariable variable = (PsiVariable)element;
final PsiTypeElement typeElement = variable.getTypeElement();
@@ -0,0 +1,5 @@
import java.util.*;
public class F {
List list = new ArrayList<caret><String>();
}
@@ -61,6 +61,10 @@ public class MakeTypeGenericTest extends LightCodeInsightFixtureTestCase {
doTest("Change type of list to java.util.List<java.lang.String>");
}
public void testAtInitializer() {
assertIntentionNotAvailable("Change type of list to java.util.List<java.lang.String>");
}
public void testImplementedRaw() {
assertIntentionNotAvailable("Change type of");
}