mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SSR: allow to match classes, interfaces and enums with a single query
This commit is contained in:
+6
-1
@@ -84,7 +84,12 @@ class JavaPredefinedConfigurations {
|
||||
),
|
||||
createSearchTemplateInfo(
|
||||
SSRBundle.message("predefined.configuration.classes"),
|
||||
"class 'Class {}",
|
||||
"class 'Class:[script( \"!__context__.interface && !__context__.enum\" )] {}",
|
||||
CLASS_TYPE
|
||||
),
|
||||
createSearchTemplateInfo(
|
||||
SSRBundle.message("predefined.configuration.classes.interfaces.enums"),
|
||||
"class 'ClassInterfaceEnum {}",
|
||||
CLASS_TYPE
|
||||
),
|
||||
createSearchTemplateInfo(
|
||||
|
||||
+1
-1
@@ -470,7 +470,7 @@ public class JavaMatchingVisitor extends JavaElementVisitor {
|
||||
boolean result = false;
|
||||
try {
|
||||
final boolean templateIsInterface = clazz.isInterface();
|
||||
if (templateIsInterface != clazz2.isInterface()) return false;
|
||||
if (templateIsInterface && !clazz2.isInterface()) return false;
|
||||
if (templateIsInterface && clazz.isAnnotationType() && !clazz2.isAnnotationType()) return false;
|
||||
if (clazz.isEnum() && !clazz2.isEnum()) return false;
|
||||
if (clazz instanceof PsiTypeParameter != clazz2 instanceof PsiTypeParameter) return false;
|
||||
|
||||
@@ -146,6 +146,7 @@ predefined.configuration.all.fields.of.the.class=all fields of the class
|
||||
predefined.configuration.instance.fields.of.the.class=instance fields of the class
|
||||
predefined.configuration.packagelocal.fields.of.the.class=package-private fields of the class
|
||||
predefined.configuration.classes=classes
|
||||
predefined.configuration.classes.interfaces.enums=classes, interfaces & enums
|
||||
predefined.configuration.new.expressions=new expressions
|
||||
predefined.configuration.lambdas=lambdas
|
||||
predefined.configuration.method.references=method references
|
||||
|
||||
+9
-3
@@ -1278,10 +1278,16 @@ public class StructuralSearchTest extends StructuralSearchTestCase {
|
||||
final String s105 = "class B {} class A extends B { } class C {} class D extends C {}";
|
||||
assertEquals("extends match", 1, findMatchesCount(s105, "class '_ extends '_:[ref( \"class B {}\" )] {}"));
|
||||
|
||||
final String s107 = "interface IA {} interface IB extends IA { } interface IC extends IB {} interface ID extends IC {}" +
|
||||
"class A implements IA {} class B extends A { } class C extends B implements IC {} class D extends C {}";
|
||||
final String s107 = "interface IA {}" +
|
||||
"interface IB extends IA {}" +
|
||||
"interface IC extends IB {} " +
|
||||
"interface ID extends IC {}" +
|
||||
"class A implements IA {}" +
|
||||
"class B extends A {}" +
|
||||
"class C extends B implements IC {}" +
|
||||
"class D extends C {}";
|
||||
assertEquals("extends navigation match", 2, findMatchesCount(s107, "class '_ extends 'Type:+A {}"));
|
||||
assertEquals("implements navigation match", 3, findMatchesCount(s107, "class '_ implements 'Type:+IA {}"));
|
||||
assertEquals("implements navigation match", 5, findMatchesCount(s107, "class '_ implements 'Type:+IA {}"));
|
||||
|
||||
final String s109 = "interface I {}" +
|
||||
"interface I2 extends I {}" +
|
||||
|
||||
Reference in New Issue
Block a user