mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-217104 Completion popup selects third item instead of first
GitOrigin-RevId: 1f3073b0763fc0c082432f78420a1eca23fa7241
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5693ac6859
commit
49675544c8
+6
-2
@@ -47,7 +47,8 @@ public class AbstractExpectedTypeSkipper extends CompletionPreselectSkipper {
|
||||
private static Result getSkippingStatus(final LookupElement item, final CompletionLocation location) {
|
||||
if (location.getCompletionType() != CompletionType.SMART && !hasEmptyPrefix(location)) return Result.ACCEPT;
|
||||
|
||||
final PsiExpression expression = PsiTreeUtil.getParentOfType(location.getCompletionParameters().getPosition(), PsiExpression.class);
|
||||
CompletionParameters parameters = location.getCompletionParameters();
|
||||
PsiExpression expression = PsiTreeUtil.getParentOfType(parameters.getPosition(), PsiExpression.class);
|
||||
if (!(expression instanceof PsiNewExpression)) return Result.ACCEPT;
|
||||
|
||||
final Object object = item.getObject();
|
||||
@@ -88,7 +89,10 @@ public class AbstractExpectedTypeSkipper extends CompletionPreselectSkipper {
|
||||
|
||||
if (toImplement > 0) return Result.ACCEPT;
|
||||
|
||||
if (psiClass.hasModifierProperty(PsiModifier.ABSTRACT)) return Result.ABSTRACT;
|
||||
if (psiClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
if (toImplement == 0 && parameters.getCompletionType() == CompletionType.BASIC) return Result.ACCEPT;
|
||||
return Result.ABSTRACT;
|
||||
}
|
||||
if (!isDefaultType && CommonClassNames.JAVA_LANG_STRING.equals(psiClass.getQualifiedName())) return Result.STRING;
|
||||
if (CommonClassNames.JAVA_LANG_OBJECT.equals(psiClass.getQualifiedName())) return Result.NON_DEFAULT;
|
||||
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
class PopupThirdItem {
|
||||
{
|
||||
setListener(new <caret>);
|
||||
}
|
||||
|
||||
void setListener(Listener listener) {}
|
||||
}
|
||||
|
||||
interface Listener {
|
||||
void methodA();
|
||||
void methodB();
|
||||
void methodC();
|
||||
}
|
||||
|
||||
abstract class AbstractListener implements Listener {
|
||||
@Override
|
||||
public void methodA() {}
|
||||
|
||||
@Override
|
||||
public void methodB() {}
|
||||
|
||||
@Override
|
||||
public void methodC() {}
|
||||
}
|
||||
+4
-2
@@ -387,8 +387,6 @@ interface TxANotAnno {}
|
||||
final LookupImpl lookup = invokeCompletion("/../smartTypeSorting/JComponentAddNew.java")
|
||||
assertPreferredItems(0, "FooBean3", "JComponent", "Component")
|
||||
incUseCount(lookup, 2) //Component
|
||||
assertPreferredItems(1, "Component", "FooBean3", "JComponent")
|
||||
incUseCount(lookup, 0) //Component
|
||||
assertPreferredItems(0, "Component", "FooBean3", "JComponent")
|
||||
}
|
||||
|
||||
@@ -875,6 +873,10 @@ class Foo {
|
||||
checkPreferredItems 0, 'addInt', 'append', 'c', 'd', 'mayCallManyTimes', 'putLong'
|
||||
}
|
||||
|
||||
void testSelectAbstractClassWithNoAbstractMethods() {
|
||||
checkPreferredItems 0, 'AbstractListener', 'Listener'
|
||||
}
|
||||
|
||||
void testPreferPrintln() {
|
||||
myFixture.configureByText 'a.java', 'class Foo { { System.out.pri<caret>x } }'
|
||||
myFixture.completeBasic()
|
||||
|
||||
Reference in New Issue
Block a user