diff --git a/java/java-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java b/java/java-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java index 6cf445dd6a69..9acf65d1b2f7 100644 --- a/java/java-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java @@ -18,6 +18,7 @@ package com.intellij.codeInspection; import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.daemon.GroupNames; import com.intellij.codeInsight.intention.HighPriorityAction; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; @@ -109,6 +110,7 @@ public class ExplicitTypeCanBeDiamondInspection extends BaseJavaLocalInspectionT } private static class ReplaceWithDiamondFix implements LocalQuickFix, HighPriorityAction { + public static final Logger LOG = Logger.getInstance("#" + ReplaceWithDiamondFix.class.getName()); @NotNull @Override public String getName() { @@ -126,8 +128,13 @@ public class ExplicitTypeCanBeDiamondInspection extends BaseJavaLocalInspectionT final PsiElement psiElement = descriptor.getPsiElement(); if (psiElement instanceof PsiReferenceParameterList) { if (!CodeInsightUtilBase.prepareFileForWrite(psiElement.getContainingFile())) return; - final PsiTypeElement[] parameterElements = ((PsiReferenceParameterList)psiElement).getTypeParameterElements(); - psiElement.deleteChildRange(parameterElements[0], parameterElements[parameterElements.length - 1]); + final PsiNewExpression expression = + (PsiNewExpression)JavaPsiFacade.getElementFactory(project).createExpressionFromText("new a<>()", psiElement); + final PsiJavaCodeReferenceElement classReference = expression.getClassReference(); + LOG.assertTrue(classReference != null); + final PsiReferenceParameterList parameterList = classReference.getParameterList(); + LOG.assertTrue(parameterList != null); + psiElement.replace(parameterList); } } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/Simplify2DiamondInspectionsTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/Simplify2DiamondInspectionsTest.java index 8667fdfcd617..76136b5fb8ef 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/Simplify2DiamondInspectionsTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/Simplify2DiamondInspectionsTest.java @@ -17,17 +17,6 @@ package com.intellij.codeInsight.daemon.quickFix; import com.intellij.codeInspection.ExplicitTypeCanBeDiamondInspection; import com.intellij.codeInspection.LocalInspectionTool; -import com.intellij.codeInspection.accessStaticViaInstance.AccessStaticViaInstance; -import com.intellij.codeInspection.deprecation.DeprecationInspection; -import com.intellij.codeInspection.ex.GlobalInspectionToolWrapper; -import com.intellij.codeInspection.javaDoc.JavaDocReferenceInspection; -import com.intellij.codeInspection.sillyAssignment.SillyAssignmentInspection; -import com.intellij.codeInspection.uncheckedWarnings.UncheckedWarningLocalInspection; -import com.intellij.codeInspection.unneededThrows.RedundantThrowsDeclaration; -import com.intellij.codeInspection.unusedParameters.UnusedParametersInspection; -import com.intellij.codeInspection.unusedSymbol.UnusedSymbolLocalInspection; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; //todo test3 should be checked if it compiles - as now javac infers Object instead of String?!