IDEA-217104 Completion popup selects third item instead of first

GitOrigin-RevId: 1f3073b0763fc0c082432f78420a1eca23fa7241
This commit is contained in:
peter
2019-07-11 17:42:27 +03:00
committed by intellij-monorepo-bot
parent 5693ac6859
commit 49675544c8
3 changed files with 34 additions and 4 deletions
@@ -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;
@@ -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() {}
}
@@ -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()