mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SSR: allow expression constraints on complete match
This commit is contained in:
+1
@@ -34,6 +34,7 @@ class JavaPredefinedConfigurations {
|
||||
createSearchTemplateInfo(SSRBundle.message("predefined.configuration.all.expressions.of.some.type"),"'_Expression:[exprtype( SomeType )]",EXPRESSION_TYPE),
|
||||
createSearchTemplateInfo(SSRBundle.message("predefined.configuration.sample.method.invokation.with.constant.argument"),"Integer.parseInt('_a:[script( \"com.intellij.psi.util.PsiUtil.isConstantExpression(__context__)\" )])",EXPRESSION_TYPE),
|
||||
createSearchTemplateInfo(SSRBundle.message("predefined.configuration.method.references"), "'_Qualifier::'methodName", EXPRESSION_TYPE),
|
||||
createSearchTemplateInfo(SSRBundle.message("predefined.configuration.string.concatenations"), "[exprtype( java\\.lang\\.String )]'_a + '_b+", EXPRESSION_TYPE),
|
||||
|
||||
// Operators
|
||||
createSearchTemplateInfo(SSRBundle.message("predefined.configuration.block.dcls"),"{\n '_Type+ 'Var+ = '_Init*;\n '_BlockStatements*;\n}",OPERATOR_TYPE),
|
||||
|
||||
+13
-10
@@ -429,14 +429,7 @@ public class PatternCompiler {
|
||||
addPredicate(handler,predicate);
|
||||
}
|
||||
|
||||
Set<MatchPredicate> predicates = new LinkedHashSet<MatchPredicate>();
|
||||
for (MatchPredicateProvider matchPredicateProvider : Extensions.getExtensions(MatchPredicateProvider.EP_NAME)) {
|
||||
matchPredicateProvider.collectPredicates(constraint, name, options, predicates);
|
||||
}
|
||||
for (MatchPredicate matchPredicate : predicates) {
|
||||
addPredicate(handler, matchPredicate);
|
||||
}
|
||||
|
||||
addExtensionPredicates(options, constraint, handler);
|
||||
addScriptConstraint(project, name, constraint, handler);
|
||||
|
||||
if (!StringUtil.isEmptyOrSpaces(constraint.getContainsConstraint())) {
|
||||
@@ -474,6 +467,7 @@ public class PatternCompiler {
|
||||
addPredicate(handler,predicate);
|
||||
}
|
||||
|
||||
addExtensionPredicates(options, constraint, handler);
|
||||
addScriptConstraint(project, Configuration.CONTEXT_VAR_NAME, constraint, handler);
|
||||
}
|
||||
|
||||
@@ -505,6 +499,16 @@ public class PatternCompiler {
|
||||
return elements;
|
||||
}
|
||||
|
||||
private static void addExtensionPredicates(MatchOptions options, MatchVariableConstraint constraint, SubstitutionHandler handler) {
|
||||
Set<MatchPredicate> predicates = new LinkedHashSet<MatchPredicate>();
|
||||
for (MatchPredicateProvider matchPredicateProvider : Extensions.getExtensions(MatchPredicateProvider.EP_NAME)) {
|
||||
matchPredicateProvider.collectPredicates(constraint, handler.getName(), options, predicates);
|
||||
}
|
||||
for (MatchPredicate matchPredicate : predicates) {
|
||||
addPredicate(handler, matchPredicate);
|
||||
}
|
||||
}
|
||||
|
||||
private static void addScriptConstraint(Project project, String name, MatchVariableConstraint constraint, SubstitutionHandler handler) {
|
||||
if (constraint.getScriptCodeConstraint()!= null && constraint.getScriptCodeConstraint().length() > 2) {
|
||||
final String script = StringUtil.stripQuotesAroundValue(constraint.getScriptCodeConstraint());
|
||||
@@ -515,12 +519,11 @@ public class PatternCompiler {
|
||||
}
|
||||
}
|
||||
|
||||
static void addPredicate(SubstitutionHandler handler, MatchPredicate predicate) {
|
||||
private static void addPredicate(SubstitutionHandler handler, MatchPredicate predicate) {
|
||||
if (handler.getPredicate()==null) {
|
||||
handler.setPredicate(predicate);
|
||||
} else {
|
||||
handler.setPredicate(new BinaryPredicate(handler.getPredicate(), predicate, false));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -466,7 +466,6 @@ class EditVarConstraintsDialog extends DialogWrapper {
|
||||
final boolean contextVar = Configuration.CONTEXT_VAR_NAME.equals(var.getName());
|
||||
containedInConstraints.setVisible(contextVar);
|
||||
textConstraintsPanel.setVisible(!contextVar);
|
||||
expressionConstraints.setVisible(!contextVar);
|
||||
partOfSearchResults.setEnabled(!contextVar);
|
||||
occurencePanel.setVisible(!contextVar);
|
||||
}
|
||||
|
||||
@@ -150,6 +150,7 @@ predefined.configuration.classes=classes
|
||||
predefined.configuration.new.expressions=new expressions
|
||||
predefined.configuration.lambdas=lambdas
|
||||
predefined.configuration.method.references=method references
|
||||
predefined.configuration.string.concatenations=string concatenations
|
||||
|
||||
# edit variable constraint dialog options
|
||||
invalid.regular.expression.title=Invalid Regular Expression
|
||||
|
||||
Reference in New Issue
Block a user