diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java b/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java index 6cc5e983fc69..d96b05aaf471 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java @@ -77,6 +77,19 @@ public class ConstructorInsertHandler implements InsertHandler 0 && ((PsiTypeLookupItem)delegate).calcGenerics(position, context).isEmpty() && context.getCompletionChar() != '('; + + if (context.getDocument().getTextLength() > context.getTailOffset() && + context.getDocument().getCharsSequence().charAt(context.getTailOffset()) == '<') { + PsiJavaCodeReferenceElement ref = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getTailOffset(), PsiJavaCodeReferenceElement.class, false); + if (ref != null) { + PsiReferenceParameterList parameterList = ref.getParameterList(); + if (parameterList != null && context.getTailOffset() == parameterList.getTextRange().getStartOffset()) { + context.getDocument().deleteString(parameterList.getTextRange().getStartOffset(), parameterList.getTextRange().getEndOffset()); + context.commitDocument(); + } + } + } + delegate.handleInsert(context); PostprocessReformattingAspect.getInstance(context.getProject()).doPostponedFormatting(context.getFile().getViewProvider()); } @@ -85,6 +98,7 @@ public class ConstructorInsertHandler implements InsertHandler hs = new Ko(); + } +} +class Koo {} diff --git a/java/java-tests/testData/codeInsight/completion/normal/OverwriteGenericsAfterNew_after.java b/java/java-tests/testData/codeInsight/completion/normal/OverwriteGenericsAfterNew_after.java new file mode 100644 index 000000000000..9cd9c1b90b94 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/OverwriteGenericsAfterNew_after.java @@ -0,0 +1,6 @@ +class Bar { + { + Koo hs = new Koo(); + } +} +class Koo {} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 90bf9bb2877a..bde8a4883d74 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -1339,6 +1339,7 @@ public class ListUtils { public void testInterfaceImplementationNoCast() { doTest() } public void testStaticallyImportedMethodsBeforeExpression() { doTest() } public void testInnerChainedReturnType() { doTest() } + public void testOverwriteGenericsAfterNew() { doTest('\n') } private CommonCodeStyleSettings getCodeStyleSettings() { return CodeStyleSettingsManager.getSettings(getProject()).getCommonSettings(JavaLanguage.INSTANCE);