mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-194738 Inner class is suggested twice on second completion
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
+12
-21
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user