mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
prefer local variables over static method references in completion
This commit is contained in:
+2
-4
@@ -21,7 +21,6 @@ import com.intellij.codeInsight.lookup.AutoCompletionPolicy;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.editor.EditorModificationUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -105,9 +104,8 @@ public class FunctionalExpressionCompletionProvider extends CompletionProvider<C
|
||||
lambdaExpression = (PsiLambdaExpression)codeStyleManager.reformat(lambdaExpression);
|
||||
paramsString = lambdaExpression.getParameterList().getText();
|
||||
final LookupElementBuilder builder =
|
||||
LookupElementBuilder.create(functionalInterfaceMethod, paramsString)
|
||||
LookupElementBuilder.create(functionalInterfaceMethod, paramsString + " -> ")
|
||||
.withPresentableText(paramsString + " -> {}")
|
||||
.withInsertHandler((context, item) -> EditorModificationUtil.insertStringAtCaret(context.getEditor(), " -> "))
|
||||
.withTypeText(functionalInterfaceType.getPresentableText())
|
||||
.withIcon(AllIcons.Nodes.Function);
|
||||
LookupElement lambdaElement = builder.withAutoCompletionPolicy(AutoCompletionPolicy.NEVER_AUTOCOMPLETE);
|
||||
@@ -279,7 +277,7 @@ public class FunctionalExpressionCompletionProvider extends CompletionProvider<C
|
||||
JavaResolveUtil.isAccessible(psiMethod, null, psiMethod.getModifierList(), originalPosition, null, null)) {
|
||||
LookupElement methodRefLookupElement = createMethodRefOnClass(functionalInterfaceType, psiMethod, qualifierClass);
|
||||
if (prioritize && containingClass == paramClass) {
|
||||
methodRefLookupElement = PrioritizedLookupElement.withPriority(methodRefLookupElement, 1);
|
||||
methodRefLookupElement = PrioritizedLookupElement.withExplicitProximity(methodRefLookupElement, 1);
|
||||
}
|
||||
result.add(methodRefLookupElement);
|
||||
}
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import java.util.function.*;
|
||||
|
||||
class Foo {
|
||||
void foo(PsiElement psiElement) {
|
||||
Function<PsiElement, PsiElement> f = psi<caret>
|
||||
}
|
||||
}
|
||||
|
||||
interface PsiElement {
|
||||
PsiElement getParent();
|
||||
}
|
||||
-2
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightSettings;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupManager;
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl;
|
||||
@@ -48,7 +47,6 @@ public abstract class CompletionSortingTestCase extends LightFixtureCompletionTe
|
||||
try {
|
||||
LookupManager.getInstance(getProject()).hideActiveLookup();
|
||||
UISettings.getInstance().setSortLookupElementsLexicographically(false);
|
||||
CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE = CodeInsightSettings.FIRST_LETTER;
|
||||
}
|
||||
finally {
|
||||
super.tearDown();
|
||||
|
||||
+8
@@ -16,6 +16,7 @@
|
||||
package com.intellij.codeInsight.completion
|
||||
|
||||
import com.intellij.JavaTestUtil
|
||||
import com.intellij.codeInsight.CodeInsightSettings
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation
|
||||
import com.intellij.testFramework.LightProjectDescriptor
|
||||
|
||||
@@ -271,4 +272,11 @@ class Test88 {
|
||||
myFixture.type(':')
|
||||
checkResultByFile(getTestName(false) + "_after.java")
|
||||
}
|
||||
|
||||
void testPreferLocalsOverMethodRefs() {
|
||||
CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE = CodeInsightSettings.NONE
|
||||
configureByTestName()
|
||||
myFixture.assertPreferredCompletionItems 0, "psiElement1 -> ", "psiElement", "getParent", "PsiElement"
|
||||
}
|
||||
|
||||
}
|
||||
+2
-8
@@ -81,14 +81,8 @@ class NormalCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
}
|
||||
|
||||
void testUppercaseMatters2() throws Throwable {
|
||||
final int old = CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE
|
||||
try {
|
||||
CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE = CodeInsightSettings.ALL
|
||||
checkPreferredItems(0, "classLoader", "classLoader2")
|
||||
}
|
||||
finally {
|
||||
CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE = old
|
||||
}
|
||||
CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE = CodeInsightSettings.ALL
|
||||
checkPreferredItems(0, "classLoader", "classLoader2")
|
||||
}
|
||||
|
||||
void testShorterShouldBePreselected() throws Throwable {
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ public class SmartType18CompletionTest extends LightFixtureCompletionTestCase {
|
||||
myFixture.addClass("package foo; class ImplInaccessible implements intf.Intf<String> {}");
|
||||
|
||||
configureByTestName();
|
||||
myFixture.assertPreferredCompletionItems(0, "ImplBar::new", "ImplFoo::new", "()");
|
||||
myFixture.assertPreferredCompletionItems(0, "ImplBar::new", "ImplFoo::new", "() -> ");
|
||||
myFixture.type('\n');
|
||||
checkResultByFile("/" + getTestName(false) + "-out.java");
|
||||
}
|
||||
|
||||
+8
-2
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightSettings;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupEvent;
|
||||
import com.intellij.codeInsight.lookup.LookupManager;
|
||||
@@ -40,8 +41,13 @@ public abstract class LightFixtureCompletionTestCase extends LightCodeInsightFix
|
||||
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
myItems = null;
|
||||
super.tearDown();
|
||||
try {
|
||||
myItems = null;
|
||||
CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE = CodeInsightSettings.FIRST_LETTER;
|
||||
}
|
||||
finally {
|
||||
super.tearDown();
|
||||
}
|
||||
}
|
||||
|
||||
protected void configureByFile(String path) {
|
||||
|
||||
Reference in New Issue
Block a user