java completion: lambda items should be higher than recently selected items (IDEA-183824)

This commit is contained in:
peter
2017-12-15 17:33:50 +01:00
parent 5ee213213d
commit 9ad8c63df4
6 changed files with 32 additions and 2 deletions

View File

@@ -40,7 +40,8 @@ public class JavaCompletionStatistician extends CompletionStatistician{
if (o instanceof PsiLocalVariable || o instanceof PsiParameter ||
o instanceof PsiThisExpression || o instanceof PsiKeyword ||
element.getUserData(JavaCompletionUtil.SUPER_METHOD_PARAMETERS) != null) {
element.getUserData(JavaCompletionUtil.SUPER_METHOD_PARAMETERS) != null ||
element.getUserData(FunctionalExpressionCompletionProvider.FUNCTIONAL_EXPR_ITEM) != null) {
return StatisticsInfo.EMPTY;
}

View File

@@ -0,0 +1,5 @@
class Foo {
void foo(java.util.stream.Stream<Foo> s) {
Stri<caret>
}
}

View File

@@ -315,6 +315,15 @@ class Test88 {
myFixture.assertPreferredCompletionItems 0, '(foo, foo2) -> '
}
void testPreferLambdaToRecentSelections() {
configureByTestName()
myFixture.assertPreferredCompletionItems 0, 'String'
myFixture.type('\n str;\n') // select 'String'
myFixture.type('s.reduce(')
myFixture.completeBasic()
myFixture.assertPreferredCompletionItems 0, '(foo, foo2) -> ', 's', 'str', 'String'
}
private checkResultByFileName() {
checkResultByFile(getTestName(false) + "_after.java")
}

View File

@@ -16,10 +16,13 @@
package com.intellij.java.codeInsight.completion
import com.intellij.testFramework.LightProjectDescriptor
import org.jetbrains.annotations.NotNull
/**
* @author peter
*/
class NormalCompletionDfaTest extends NormalCompletionTestCase {
@NotNull
@Override
protected LightProjectDescriptor getProjectDescriptor() {
return JAVA_8

View File

@@ -38,9 +38,11 @@ import com.intellij.psi.impl.PsiDocumentManagerBase
import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.util.ui.UIUtil
import com.siyeh.ig.style.UnqualifiedFieldAccessInspection
import org.jetbrains.annotations.NotNull
class NormalCompletionTest extends NormalCompletionTestCase {
@NotNull
@Override
protected LightProjectDescriptor getProjectDescriptor() {
return JAVA_9

View File

@@ -21,6 +21,8 @@ import com.intellij.codeInsight.lookup.LookupEvent;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.psi.statistics.impl.StatisticsManagerImpl;
import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull;
@@ -39,6 +41,12 @@ public abstract class LightFixtureCompletionTestCase extends LightCodeInsightFix
return JAVA_1_6;
}
@Override
protected void setUp() throws Exception {
super.setUp();
((StatisticsManagerImpl)StatisticsManager.getInstance()).enableStatistics(myFixture.getTestRootDisposable());
}
@Override
protected void tearDown() throws Exception {
try {
@@ -98,7 +106,9 @@ public abstract class LightFixtureCompletionTestCase extends LightCodeInsightFix
assertOrderedEquals(strings.subList(0, Math.min(items.length, strings.size())), items);
}
protected void assertStringItems(String... items) {
assertOrderedEquals(myFixture.getLookupElementStrings(), items);
List<String> strings = myFixture.getLookupElementStrings();
assertNotNull(strings);
assertOrderedEquals(strings, items);
}
protected void type(String s) {