mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PsiClassNamePatternCondition now exposes used stringPattern
to be able to test if pattern is applyable without obtaining a `PsiClass`
This commit is contained in:
@@ -20,31 +20,26 @@ import com.intellij.util.ProcessingContext;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.BiPredicate;
|
||||
public class PsiClassNamePatternCondition extends PatternCondition<PsiClass> {
|
||||
|
||||
abstract public class PsiClassNamePatternCondition extends PatternCondition<PsiClass> {
|
||||
private final ElementPattern<String> stringPattern;
|
||||
|
||||
public static PsiClassNamePatternCondition accepting(BiPredicate<String, ProcessingContext> condition) {
|
||||
return new PsiClassNamePatternCondition() {
|
||||
@Override
|
||||
public boolean accepts(String qualifiedName, ProcessingContext context) {
|
||||
return condition.test(qualifiedName, context);
|
||||
}
|
||||
};
|
||||
public PsiClassNamePatternCondition(ElementPattern<String> pattern) {
|
||||
this("withQualifiedName", pattern);
|
||||
}
|
||||
|
||||
public PsiClassNamePatternCondition() {
|
||||
this("withQualifiedName");
|
||||
}
|
||||
|
||||
public PsiClassNamePatternCondition(@Nullable String debugMethodName) {
|
||||
public PsiClassNamePatternCondition(@Nullable String debugMethodName, ElementPattern<String> pattern) {
|
||||
super(debugMethodName);
|
||||
stringPattern = pattern;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean accepts(@NotNull PsiClass aClass, ProcessingContext context) {
|
||||
return accepts(aClass.getQualifiedName(), context);
|
||||
public boolean accepts(@NotNull PsiClass aClass, ProcessingContext context) {
|
||||
return stringPattern.accepts(aClass.getQualifiedName(), context);
|
||||
}
|
||||
|
||||
public abstract boolean accepts(String qualifiedName, ProcessingContext context);
|
||||
@SuppressWarnings("unused") //Used in Kotlin
|
||||
public ElementPattern<String> getStringPattern() {
|
||||
return stringPattern;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ import com.intellij.util.ProcessingContext;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static com.intellij.patterns.StandardPatterns.string;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
@@ -102,10 +104,10 @@ public class PsiClassPattern extends PsiMemberPattern<PsiClass, PsiClassPattern>
|
||||
}
|
||||
|
||||
public PsiClassPattern withQualifiedName(@NonNls @NotNull final String qname) {
|
||||
return with(PsiClassNamePatternCondition.accepting((qualifiedName, context) -> qname.equals(qualifiedName)));
|
||||
return with(new PsiClassNamePatternCondition(string().equalTo(qname)));
|
||||
}
|
||||
|
||||
public PsiClassPattern withQualifiedName(@NonNls @NotNull final ElementPattern<String> qname) {
|
||||
return with(PsiClassNamePatternCondition.accepting((qualifiedName, context) -> qname.accepts(qualifiedName, context)));
|
||||
return with(new PsiClassNamePatternCondition(qname));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user