mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
[java-completion] IDEA-324653 No completion for qualified Enum in switch
GitOrigin-RevId: 60392ce4c67348dfe05d558fc88f62884300f553
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e8adfcce9b
commit
b9abbe646c
+9
-4
@@ -313,12 +313,17 @@ public final class JavaCompletionContributor extends CompletionContributor imple
|
||||
return new OrFilter(new ClassFilter(PsiClass.class), constantVariablesFilter);
|
||||
}
|
||||
|
||||
PsiClass typeClass = PsiUtil.resolveClassInType(selectorType);
|
||||
|
||||
ClassFilter inheritorsFilter = new ClassFilter(PsiClass.class) {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
return element instanceof PsiClass psiClass && InheritanceUtil.isInheritorOrSelf(psiClass, typeClass, true);
|
||||
return element instanceof PsiClass psiClass && TypeConversionUtil.areTypesConvertible(TypeUtils.getType(psiClass), selectorType);
|
||||
}
|
||||
};
|
||||
|
||||
ClassFilter enumInheritorsFilter = new ClassFilter(PsiField.class) {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
return element instanceof PsiEnumConstant enumConstant && TypeConversionUtil.areTypesConvertible(enumConstant.getType(), selectorType);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -327,7 +332,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple
|
||||
}
|
||||
|
||||
return selectorType instanceof PsiClassType
|
||||
? inheritorsFilter
|
||||
? new OrFilter(inheritorsFilter, enumInheritorsFilter)
|
||||
: TrueFilter.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class Main {
|
||||
sealed interface I{}
|
||||
enum ENNNNN implements I{AAA}
|
||||
final class AAA implements I{}
|
||||
|
||||
public static void test3(I en) {
|
||||
switch (en) {
|
||||
case ENNN<caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
class Main {
|
||||
sealed interface I{}
|
||||
enum ENNNNN implements I{AAA}
|
||||
final class AAA implements I{}
|
||||
|
||||
public static void test3(I en) {
|
||||
switch (en) {
|
||||
case ENNNNN<caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class Main {
|
||||
interface I{}
|
||||
enum ENNNNN implements I{AAA}
|
||||
final class AAAAAA implements I{}
|
||||
|
||||
public static void test3(I en) {
|
||||
switch (en) {
|
||||
case AAAA<caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
class Main {
|
||||
interface I{}
|
||||
enum ENNNNN implements I{AAA}
|
||||
final class AAAAAA implements I{}
|
||||
|
||||
public static void test3(I en) {
|
||||
switch (en) {
|
||||
case AAAAAA<caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
class Main {
|
||||
sealed interface I{}
|
||||
enum EN implements I{AAA}
|
||||
|
||||
public static void test3(I en) {
|
||||
switch (en) {
|
||||
case EN.A<caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
class Main {
|
||||
sealed interface I{}
|
||||
enum EN implements I{AAA}
|
||||
|
||||
public static void test3(I en) {
|
||||
switch (en) {
|
||||
case EN.AAA -> <caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
class Main {
|
||||
sealed interface I{}
|
||||
enum EN implements I{AAA}
|
||||
|
||||
public static void test3(EN en) {
|
||||
switch (en) {
|
||||
case EN.A<caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
class Main {
|
||||
sealed interface I{}
|
||||
enum EN implements I{AAA}
|
||||
|
||||
public static void test3(EN en) {
|
||||
switch (en) {
|
||||
case EN.AAA -> <caret>
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
@@ -79,6 +79,10 @@ public class NormalSwitchCompletionTest extends NormalCompletionTestCase {
|
||||
public void testCompleteYieldInsideSwitch() { doTest(); }
|
||||
public void testWhenInSwitchRule() { doTest(); }
|
||||
|
||||
public void testQualifierEnumConstantInSwitch1() { doTest(); }
|
||||
public void testQualifierEnumConstantInSwitch2() { doTest(); }
|
||||
public void testClassPatternInSwitch1() { doTest(); }
|
||||
public void testClassPatternInSwitch2() { doTest(); }
|
||||
private void doTestPostfixCompletion() {
|
||||
LiveTemplateCompletionContributor.setShowTemplatesInTests(true, myFixture.getTestRootDisposable());
|
||||
configure();
|
||||
|
||||
Reference in New Issue
Block a user