mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Minor refactoring of GroovyPatterns.
This commit is contained in:
+2
-2
@@ -36,12 +36,12 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrNamedArg
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrCall;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.patterns.GroovyElementPattern;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.patterns.GroovyPatterns;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static com.intellij.patterns.PlatformPatterns.psiElement;
|
||||
import static org.jetbrains.plugins.groovy.lang.psi.patterns.GroovyPatterns.namedArgument;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -77,7 +77,7 @@ class MapArgumentCompletionProvider extends CompletionProvider<CompletionParamet
|
||||
));
|
||||
|
||||
ElementPattern<PsiElement> inLabel = psiElement(GroovyTokenTypes.mIDENT).withParent(psiElement(GrArgumentLabel.class).withParent(
|
||||
GroovyPatterns.methodNamedParameter(null)));
|
||||
namedArgument().isParameterOfMethodCall(null)));
|
||||
|
||||
contributor.extend(CompletionType.BASIC, inArgumentListOfCall, instance);
|
||||
contributor.extend(CompletionType.BASIC, inLabel, instance);
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package org.jetbrains.plugins.groovy.lang.psi.patterns;
|
||||
|
||||
import com.intellij.patterns.ElementPattern;
|
||||
import com.intellij.patterns.PatternCondition;
|
||||
import com.intellij.patterns.StringPattern;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrNamedArgument;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrCall;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
|
||||
/**
|
||||
* @author Sergey Evdokimov
|
||||
*/
|
||||
public class GroovyNamedArgumentPattern extends GroovyElementPattern<GrNamedArgument, GroovyNamedArgumentPattern> {
|
||||
|
||||
public GroovyNamedArgumentPattern() {
|
||||
super(GrNamedArgument.class);
|
||||
}
|
||||
|
||||
public GroovyNamedArgumentPattern withLabel(@NotNull final String label) {
|
||||
return with(new PatternCondition<GrNamedArgument>("left") {
|
||||
public boolean accepts(@NotNull GrNamedArgument namedArgument, final ProcessingContext context) {
|
||||
return label.equals(namedArgument.getLabelName());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public GroovyNamedArgumentPattern withLabel(@NotNull final StringPattern labelPattern) {
|
||||
return with(new PatternCondition<GrNamedArgument>("left") {
|
||||
public boolean accepts(@NotNull GrNamedArgument namedArgument, final ProcessingContext context) {
|
||||
return labelPattern.getCondition().accepts(namedArgument.getLabelName(), context);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public GroovyNamedArgumentPattern withExpression(@NotNull final ElementPattern pattern) {
|
||||
return with(new PatternCondition<GrNamedArgument>("left") {
|
||||
public boolean accepts(@NotNull GrNamedArgument namedArgument, final ProcessingContext context) {
|
||||
return pattern.getCondition().accepts(namedArgument.getExpression(), context);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public GroovyNamedArgumentPattern isParameterOfMethodCall(@Nullable final ElementPattern<? extends GrCall> methodCall) {
|
||||
return with(new PatternCondition<GrNamedArgument>("left") {
|
||||
public boolean accepts(@NotNull GrNamedArgument namedArgument, final ProcessingContext context) {
|
||||
GrCall call = PsiUtil.getMethodByNamedParameter(namedArgument);
|
||||
|
||||
return call != null && (methodCall == null || methodCall.accepts(call, context));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
+5
-13
@@ -92,7 +92,11 @@ public class GroovyPatterns extends PsiJavaPatterns {
|
||||
}
|
||||
|
||||
public static GroovyElementPattern.Capture<GrLiteralImpl> namedArgumentStringLiteral() {
|
||||
return stringLiteral().withParent(psiElement(GrNamedArgument.class));
|
||||
return stringLiteral().withParent(namedArgument());
|
||||
}
|
||||
|
||||
public static GroovyNamedArgumentPattern namedArgument() {
|
||||
return new GroovyNamedArgumentPattern();
|
||||
}
|
||||
|
||||
public static GroovyElementPattern.Capture<GrArgumentLabel> namedArgumentLabel(@Nullable final ElementPattern<? extends String> namePattern) {
|
||||
@@ -114,18 +118,6 @@ public class GroovyPatterns extends PsiJavaPatterns {
|
||||
});
|
||||
}
|
||||
|
||||
public static GroovyElementPattern.Capture<GrNamedArgument> methodNamedParameter(@Nullable final ElementPattern<? extends GrCall> methodCall) {
|
||||
return new GroovyElementPattern.Capture<GrNamedArgument>(new InitialPatternCondition<GrNamedArgument>(GrNamedArgument.class) {
|
||||
public boolean accepts(@Nullable final Object o, final ProcessingContext context) {
|
||||
if (!(o instanceof GrNamedArgument)) return false;
|
||||
|
||||
GrCall call = PsiUtil.getMethodByNamedParameter((GrNamedArgument)o);
|
||||
|
||||
return call != null && (methodCall == null || methodCall.accepts(call, context));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static GroovyMethodCallPattern methodCall(final ElementPattern<? extends String> names, final String className) {
|
||||
return new GroovyMethodCallPattern().withMethodName(names)
|
||||
.withMethod(psiMethod().with(new PatternCondition<PsiMethod>("psiMethodClassNameCondition") {
|
||||
|
||||
Reference in New Issue
Block a user