mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-21 12:14:37 +07:00
Completion in multi-catch
This commit is contained in:
+6
-5
@@ -67,7 +67,6 @@ public class JavaClassNameCompletionContributor extends CompletionContributor {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static void addAllClasses(CompletionParameters parameters, final CompletionResultSet result, @NotNull final Consumer<LookupElement> consumer) {
|
||||
@@ -76,10 +75,12 @@ public class JavaClassNameCompletionContributor extends CompletionContributor {
|
||||
final ElementFilter filter =
|
||||
or(JavaSmartCompletionContributor.AFTER_THROW_NEW,
|
||||
JavaCompletionContributor.INSIDE_METHOD_THROWS_CLAUSE,
|
||||
JavaCompletionContributor.IN_CATCH_TYPE).accepts(insertedElement) ? new AssignableFromFilter(CommonClassNames.JAVA_LANG_THROWABLE) :
|
||||
IN_TYPE_PARAMETER.accepts(insertedElement) ? new ExcludeDeclaredFilter(new ClassFilter(PsiTypeParameter.class)) :
|
||||
TrueFilter.INSTANCE;
|
||||
|
||||
JavaCompletionContributor.IN_CATCH_TYPE,
|
||||
JavaCompletionContributor.IN_MULTI_CATCH_TYPE).accepts(insertedElement)
|
||||
? new AssignableFromFilter(CommonClassNames.JAVA_LANG_THROWABLE)
|
||||
: IN_TYPE_PARAMETER.accepts(insertedElement)
|
||||
? new ExcludeDeclaredFilter(new ClassFilter(PsiTypeParameter.class))
|
||||
: TrueFilter.INSTANCE;
|
||||
|
||||
final boolean inJavaContext = parameters.getPosition() instanceof PsiIdentifier;
|
||||
if (AFTER_NEW.accepts(insertedElement)) {
|
||||
|
||||
+4
-1
@@ -90,6 +90,9 @@ public class JavaCompletionContributor extends CompletionContributor {
|
||||
psiElement().withParent(psiElement(PsiJavaCodeReferenceElement.class).withParent(PsiImportStatementBase.class));
|
||||
static final PsiJavaElementPattern.Capture<PsiElement> IN_CATCH_TYPE =
|
||||
psiElement().afterLeaf(psiElement().withText("(").withParent(PsiCatchSection.class));
|
||||
static final ElementPattern<PsiElement> IN_MULTI_CATCH_TYPE =
|
||||
or(psiElement().afterLeaf(psiElement().withText("|").withParent(PsiTypeElement.class).withSuperParent(2, PsiCatchSection.class)),
|
||||
psiElement().afterLeaf(psiElement().withText("|").withParent(PsiTypeElement.class).withSuperParent(2, PsiParameter.class).withSuperParent(3, PsiCatchSection.class)));
|
||||
static final PsiJavaElementPattern.Capture<PsiElement> INSIDE_METHOD_THROWS_CLAUSE = psiElement().afterLeaf(PsiKeyword.THROWS, ",").inside(
|
||||
PsiMethod.class).andNot(psiElement().inside(PsiCodeBlock.class)).andNot(psiElement().inside(PsiParameterList.class));
|
||||
|
||||
@@ -128,7 +131,7 @@ public class JavaCompletionContributor extends CompletionContributor {
|
||||
return ElementClassFilter.VARIABLE;
|
||||
}
|
||||
|
||||
if (IN_CATCH_TYPE.accepts(position)) {
|
||||
if (IN_CATCH_TYPE.accepts(position) || IN_MULTI_CATCH_TYPE.accepts(position)) {
|
||||
return new AssignableFromFilter(CommonClassNames.JAVA_LANG_THROWABLE);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user