diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 415eeee29aa6..d392983dab62 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -522,11 +522,11 @@ public class JavaCompletionUtil { } if (completion instanceof PsiClass) { - List classItems = JavaClassNameCompletionContributor.createClassLookupItems((PsiClass)completion, - JavaClassNameCompletionContributor.AFTER_NEW - .accepts(reference), - JavaClassNameInsertHandler.JAVA_CLASS_INSERT_HANDLER, - Conditions.alwaysTrue()); + List classItems = JavaClassNameCompletionContributor.createClassLookupItems( + CompletionUtil.getOriginalOrSelf((PsiClass)completion), + JavaClassNameCompletionContributor.AFTER_NEW.accepts(reference), + JavaClassNameInsertHandler.JAVA_CLASS_INSERT_HANDLER, + Conditions.alwaysTrue()); return JBIterable.from(classItems).flatMap(i -> JavaConstructorCallElement.wrap(i, reference.getElement())); } } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy index fc341ea9c1f9..411d0ffcc656 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy @@ -18,7 +18,6 @@ package com.intellij.java.codeInsight.completion import com.intellij.codeInsight.CodeInsightSettings import com.intellij.codeInsight.JavaProjectCodeInsightSettings import com.intellij.codeInsight.completion.CompletionType -import com.intellij.codeInsight.completion.CompletionUtil import com.intellij.codeInsight.completion.JavaPsiClassReferenceElement import com.intellij.codeInsight.lookup.Lookup import com.intellij.codeInsight.lookup.LookupElement @@ -34,7 +33,6 @@ import com.intellij.psi.PsiTypeParameter import com.intellij.psi.codeStyle.CodeStyleSettingsManager import com.intellij.psi.codeStyle.CommonCodeStyleSettings import com.intellij.psi.codeStyle.JavaCodeStyleSettings -import com.intellij.psi.impl.PsiDocumentManagerBase import com.intellij.testFramework.LightProjectDescriptor import com.intellij.util.ui.UIUtil import com.siyeh.ig.style.UnqualifiedFieldAccessInspection @@ -1653,25 +1651,6 @@ class Bar { void testIndentingForSwitchCase() { doTest() } - void testIncrementalCopyReparse() { - ((PsiDocumentManagerBase)PsiDocumentManager.getInstance(project)).disableBackgroundCommit(myFixture.testRootDisposable) - - myFixture.configureByText('a.java', 'class Fooxxxxxxxxxx { Fooxxxxxa f;\n' + 'public void foo() {}\n' * 10000 + '}') - def items = myFixture.completeBasic() - PsiClass c1 = items[0].object - assert !c1.physical - assert CompletionUtil.getOriginalElement(c1) - - getLookup().hide() - myFixture.type('x') - items = myFixture.completeBasic() - PsiClass c2 = items[0].object - assert !c2.physical - assert CompletionUtil.getOriginalElement(c2) - - assert c1.is(c2) - } - void testShowMostSpecificOverride() { configure() assert 'B' == LookupElementPresentation.renderElement(myFixture.lookup.items[0]).typeText @@ -1869,4 +1848,16 @@ class Bar {{ assert myFixture.lookupElements.findAll { it.allLookupStrings.contains('T') }.size() < 2 } + void "test no duplication for inner class on second invocation"() { + myFixture.configureByText 'a.java', ''' +class Abc { + class FooBar {} + void foo() { + FooBarx + } +}''' + myFixture.complete(CompletionType.BASIC, 2) + assert myFixture.lookupElements.size() == 1 + } + }