diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 5e3556b2afeb..7c2dd3d7d48e 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -231,12 +231,12 @@ public class JavaCompletionContributor extends CompletionContributor { return; } - if (position instanceof PsiIdentifier) { - addIdentifierVariants(parameters, position, result, session, matcher); + if (JavaKeywordCompletion.addWildcardExtendsSuper(result, position)) { + return; } - if (JavaMemberNameCompletionContributor.INSIDE_TYPE_PARAMS_PATTERN.accepts(position)) { - return; + if (position instanceof PsiIdentifier) { + addIdentifierVariants(parameters, position, result, session, matcher); } Set usedWords = addReferenceVariants(parameters, result, session); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java index 5bc3c43cc03f..36eda50ff656 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java @@ -286,10 +286,6 @@ public class JavaKeywordCompletion { return; } - if (addWildcardExtendsSuper()) { - return; - } - addFinal(); boolean statementPosition = isStatementPosition(myPosition); @@ -324,10 +320,13 @@ public class JavaKeywordCompletion { addExtendsImplements(); } - private boolean addWildcardExtendsSuper() { - if (JavaMemberNameCompletionContributor.INSIDE_TYPE_PARAMS_PATTERN.accepts(myPosition)) { - addKeyword(new OverrideableSpace(createKeyword(PsiKeyword.EXTENDS), TailType.HUMBLE_SPACE_BEFORE_WORD)); - addKeyword(new OverrideableSpace(createKeyword(PsiKeyword.SUPER), TailType.HUMBLE_SPACE_BEFORE_WORD)); + static boolean addWildcardExtendsSuper(CompletionResultSet result, PsiElement position) { + if (JavaMemberNameCompletionContributor.INSIDE_TYPE_PARAMS_PATTERN.accepts(position)) { + for (String keyword : ContainerUtil.ar(PsiKeyword.EXTENDS, PsiKeyword.SUPER)) { + if (keyword.startsWith(result.getPrefixMatcher().getPrefix())) { + result.addElement(new OverrideableSpace(BasicExpressionCompletionContributor.createKeywordLookupItem(position, keyword), TailType.HUMBLE_SPACE_BEFORE_WORD)); + } + } return true; } return false;