IDEA-194738 Inner class is suggested twice on second completion

This commit is contained in:
peter
2018-07-02 16:31:40 +02:00
parent f435ce4d19
commit 66d2f419a4
2 changed files with 17 additions and 26 deletions
@@ -522,11 +522,11 @@ public class JavaCompletionUtil {
}
if (completion instanceof PsiClass) {
List<JavaPsiClassReferenceElement> classItems = JavaClassNameCompletionContributor.createClassLookupItems((PsiClass)completion,
JavaClassNameCompletionContributor.AFTER_NEW
.accepts(reference),
JavaClassNameInsertHandler.JAVA_CLASS_INSERT_HANDLER,
Conditions.alwaysTrue());
List<JavaPsiClassReferenceElement> 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()));
}
}
@@ -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 { Fooxxxxx<caret>a 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() {
FooBar<caret>x
}
}'''
myFixture.complete(CompletionType.BASIC, 2)
assert myFixture.lookupElements.size() == 1
}
}