diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/MakeTypeGenericInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/MakeTypeGenericInspection.java index 24aa629816f3..09b86b2fe9e5 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/MakeTypeGenericInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/MakeTypeGenericInspection.java @@ -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(); diff --git a/java/java-tests/testData/codeInspection/makeTypeGeneric/AtInitializer.java b/java/java-tests/testData/codeInspection/makeTypeGeneric/AtInitializer.java new file mode 100644 index 000000000000..a59213ad2e79 --- /dev/null +++ b/java/java-tests/testData/codeInspection/makeTypeGeneric/AtInitializer.java @@ -0,0 +1,5 @@ +import java.util.*; + +public class F { + List list = new ArrayList(); +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/MakeTypeGenericTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/MakeTypeGenericTest.java index 8672eea313c1..e012a72e22b9 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/MakeTypeGenericTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/MakeTypeGenericTest.java @@ -61,6 +61,10 @@ public class MakeTypeGenericTest extends LightCodeInsightFixtureTestCase { doTest("Change type of list to java.util.List"); } + public void testAtInitializer() { + assertIntentionNotAvailable("Change type of list to java.util.List"); + } + public void testImplementedRaw() { assertIntentionNotAvailable("Change type of"); }