mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Optimization: don't create new set of ResolveKind on each resolve.
This commit is contained in:
+2
-2
@@ -83,8 +83,8 @@ public class GrReferenceExpressionImpl extends GrReferenceElementImpl implements
|
||||
if (name == null) return GroovyResolveResult.EMPTY_ARRAY;
|
||||
|
||||
EnumSet<ClassHint.ResolveKind> kinds = getParent() instanceof GrReferenceExpression
|
||||
? EnumSet.of(ClassHint.ResolveKind.CLASS, ClassHint.ResolveKind.PACKAGE)
|
||||
: EnumSet.of(ClassHint.ResolveKind.CLASS);
|
||||
? ResolverProcessor.RESOLVE_KINDS_CLASS_PACKAGE
|
||||
: ResolverProcessor.RESOLVE_KINDS_CLASS;
|
||||
boolean hasAt = hasAt();
|
||||
GroovyResolveResult[] classCandidates = GroovyResolveResult.EMPTY_ARRAY;
|
||||
if (!hasAt) {
|
||||
|
||||
+2
-2
@@ -400,8 +400,8 @@ public class GrCodeReferenceElementImpl extends GrReferenceElementImpl implement
|
||||
}
|
||||
}
|
||||
} else {
|
||||
EnumSet<ClassHint.ResolveKind> kinds = kind == CLASS ? EnumSet.of(ClassHint.ResolveKind.CLASS) :
|
||||
EnumSet.of(ClassHint.ResolveKind.PACKAGE, ClassHint.ResolveKind.CLASS);
|
||||
EnumSet<ClassHint.ResolveKind> kinds = kind == CLASS ? ResolverProcessor.RESOLVE_KINDS_CLASS :
|
||||
ResolverProcessor.RESOLVE_KINDS_CLASS_PACKAGE;
|
||||
ResolverProcessor processor = new ClassResolverProcessor(refName, ref, kinds);
|
||||
ResolveUtil.treeWalkUp(ref, processor, false);
|
||||
GroovyResolveResult[] candidates = processor.getCandidates();
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ public class AccessorResolverProcessor extends ResolverProcessor {
|
||||
private final boolean mySearchForGetter;
|
||||
|
||||
public AccessorResolverProcessor(String name, PsiElement place, boolean searchForGetter) {
|
||||
super(name, EnumSet.of(ResolveKind.METHOD), place, PsiType.EMPTY_ARRAY);
|
||||
super(name, RESOLVE_KINDS_METHOD, place, PsiType.EMPTY_ARRAY);
|
||||
mySearchForGetter = searchForGetter;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -30,6 +30,6 @@ public class ClassResolverProcessor extends ResolverProcessor {
|
||||
}
|
||||
|
||||
public ClassResolverProcessor(String refName, PsiElement place) {
|
||||
super(refName, EnumSet.of(ClassHint.ResolveKind.CLASS), place, PsiType.EMPTY_ARRAY);
|
||||
super(refName, RESOLVE_KINDS_CLASS, place, PsiType.EMPTY_ARRAY);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -43,15 +43,15 @@ public class CompletionProcessor extends ResolverProcessor {
|
||||
}
|
||||
|
||||
public static ResolverProcessor createPropertyCompletionProcessor(PsiElement place) {
|
||||
return new CompletionProcessor(place, EnumSet.of(ResolveKind.METHOD, ResolveKind.PROPERTY), null);
|
||||
return new CompletionProcessor(place, RESOLVE_KINDS_METHOD_PROPERTY, null);
|
||||
}
|
||||
|
||||
public static ResolverProcessor createRefSameNameProcessor(PsiElement place, String name) {
|
||||
return new CompletionProcessor(place, EnumSet.of(ResolveKind.METHOD, ResolveKind.PROPERTY), name);
|
||||
return new CompletionProcessor(place, RESOLVE_KINDS_METHOD_PROPERTY, name);
|
||||
}
|
||||
|
||||
public static ResolverProcessor createClassCompletionProcessor(PsiElement place) {
|
||||
return new CompletionProcessor(place, EnumSet.of(ResolveKind.PACKAGE, ResolveKind.CLASS), null);
|
||||
return new CompletionProcessor(place, RESOLVE_KINDS_CLASS_PACKAGE, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ public class MethodResolverProcessor extends ResolverProcessor {
|
||||
this(name, place, isConstructor, thisType, argumentTypes, typeArguments, false);
|
||||
}
|
||||
public MethodResolverProcessor(String name, GroovyPsiElement place, boolean isConstructor, PsiType thisType, @Nullable PsiType[] argumentTypes, PsiType[] typeArguments, boolean allVariants) {
|
||||
super(name, EnumSet.of(ResolveKind.METHOD, ResolveKind.PROPERTY), place, PsiType.EMPTY_ARRAY);
|
||||
super(name, RESOLVE_KINDS_METHOD_PROPERTY, place, PsiType.EMPTY_ARRAY);
|
||||
myIsConstructor = isConstructor;
|
||||
myThisType = thisType;
|
||||
myArgumentTypes = argumentTypes;
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ public class PropertyResolverProcessor extends ResolverProcessor {
|
||||
private GroovyResolveResult myProperty = null;
|
||||
|
||||
public PropertyResolverProcessor(String name, PsiElement place) {
|
||||
super(name, EnumSet.of(ResolveKind.PROPERTY), place, PsiType.EMPTY_ARRAY);
|
||||
super(name, RESOLVE_KINDS_PROPERTY, place, PsiType.EMPTY_ARRAY);
|
||||
}
|
||||
|
||||
public boolean execute(PsiElement element, ResolveState state) {
|
||||
|
||||
+7
@@ -41,6 +41,13 @@ import static org.jetbrains.plugins.groovy.lang.resolve.processors.ClassHint.Res
|
||||
*/
|
||||
public class ResolverProcessor implements PsiScopeProcessor, NameHint, ClassHint, ElementClassHint {
|
||||
public static final Key<GroovyPsiElement> RESOLVE_CONTEXT = Key.create("RESOLVE_CONTEXT");
|
||||
|
||||
public static final EnumSet<ResolveKind> RESOLVE_KINDS_CLASS_PACKAGE = EnumSet.of(CLASS, PACKAGE);
|
||||
public static final EnumSet<ResolveKind> RESOLVE_KINDS_CLASS = EnumSet.of(CLASS);
|
||||
public static final EnumSet<ResolveKind> RESOLVE_KINDS_METHOD = EnumSet.of(METHOD);
|
||||
public static final EnumSet<ResolveKind> RESOLVE_KINDS_METHOD_PROPERTY = EnumSet.of(METHOD, PROPERTY);
|
||||
public static final EnumSet<ResolveKind> RESOLVE_KINDS_PROPERTY = EnumSet.of(PROPERTY);
|
||||
|
||||
protected String myName;
|
||||
private final EnumSet<ResolveKind> myResolveTargetKinds;
|
||||
private final Set<String> myProcessedClasses = new HashSet<String>();
|
||||
|
||||
Reference in New Issue
Block a user