diff --git a/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/MethodsChainsCompletionContributor.java b/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/MethodsChainsCompletionContributor.java index a015f3af78e3..6ac377c260cd 100644 --- a/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/MethodsChainsCompletionContributor.java +++ b/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/MethodsChainsCompletionContributor.java @@ -53,7 +53,8 @@ import static com.intellij.patterns.PsiJavaPatterns.psiElement; public class MethodsChainsCompletionContributor extends CompletionContributor { public static final String REGISTRY_KEY = "compiler.ref.chain.search"; private static final Logger LOG = Logger.getInstance(MethodsChainsCompletionContributor.class); - public static final CompletionType COMPLETION_TYPE = ApplicationManager.getApplication().isUnitTestMode() ? CompletionType.BASIC : CompletionType.SMART; + private static final boolean UNIT_TEST_MODE = ApplicationManager.getApplication().isUnitTestMode(); + public static final CompletionType COMPLETION_TYPE = UNIT_TEST_MODE ? CompletionType.BASIC : CompletionType.SMART; @SuppressWarnings("unchecked") public MethodsChainsCompletionContributor() { @@ -77,12 +78,14 @@ public class MethodsChainsCompletionContributor extends CompletionContributor { result.passResult(completionResult); }); List elementsFoundByMethodsChainsSearch = searchForLookups(completionContext); - Iterator it = elementsFoundByMethodsChainsSearch.iterator(); - while (it.hasNext()) { - LookupElement lookupElement = it.next(); - PsiElement psi = lookupElement.getPsiElement(); - if (psi instanceof PsiMethod && alreadySuggested.contains(psi)) { - it.remove(); + if (!UNIT_TEST_MODE) { + Iterator it = elementsFoundByMethodsChainsSearch.iterator(); + while (it.hasNext()) { + LookupElement lookupElement = it.next(); + PsiElement psi = lookupElement.getPsiElement(); + if (psi instanceof PsiMethod && alreadySuggested.contains(psi)) { + it.remove(); + } } } result.addAllElements(elementsFoundByMethodsChainsSearch); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/MethodChainsCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/MethodChainsCompletionTest.java index 9c416012feec..d3116ae43c73 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/MethodChainsCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/MethodChainsCompletionTest.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.completion; import com.intellij.JavaTestUtil; +import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.compiler.chainsSearch.ChainRelevance; import com.intellij.compiler.chainsSearch.completion.MethodsChainsCompletionContributor; @@ -251,7 +252,14 @@ public class MethodChainsCompletionTest extends AbstractCompilerAwareTest { .setValue(ChainCompletionMethodCallLookupElement.PROP_METHODS_CHAIN_COMPLETION_AUTO_COMPLETION, String.valueOf(true)); compileAndIndexData(TEST_INDEX_FILE_NAME); myFixture.configureByFiles(getBeforeCompletionFilePath()); - myFixture.complete(CompletionType.BASIC); + for (LookupElement element : myFixture.complete(CompletionType.BASIC)) { + if (element instanceof WeightableChainLookupElement) { + myFixture.getLookup().setCurrentItem(element); + myFixture.finishLookup(Lookup.AUTO_INSERT_SELECT_CHAR); + break; + } + } + PropertiesComponent.getInstance(getProject()) .setValue(ChainCompletionMethodCallLookupElement.PROP_METHODS_CHAIN_COMPLETION_AUTO_COMPLETION, String.valueOf(false)); myFixture.checkResultByFile(getAfterCompletionFilePath());