From b3efd0cdcded4f07a4bc4d939f4875934fa20e84 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 25 May 2016 07:48:09 +0200 Subject: [PATCH] gdsl: don't mark scripts as using place file if not necessary to allow for better cache reuse; cleanup --- .../plugins/groovy/dsl/DslPointcut.java | 4 +-- .../dsl/toplevel/ClassContextFilter.java | 28 +++++-------------- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java index ce33b6e9ca4e..7c76247bf9da 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java @@ -118,9 +118,9 @@ public abstract class DslPointcut { @Override List matches(GdslType src, ProcessingContext context) { - final PsiFile placeFile = context.get(GdslUtil.INITIAL_CONTEXT).getPlaceFile(); + final PsiFile placeFile = context.get(GdslUtil.INITIAL_CONTEXT).justGetPlaceFile(); if (ClassContextFilter.isSubtype(src.psiType, placeFile, (String)arg)) { - return Arrays.asList(src); + return Collections.singletonList(src); } return null; } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/toplevel/ClassContextFilter.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/toplevel/ClassContextFilter.java index 4c543b9e065e..59e5aba7570d 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/toplevel/ClassContextFilter.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/toplevel/ClassContextFilter.java @@ -15,14 +15,10 @@ */ package org.jetbrains.plugins.groovy.dsl.toplevel; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Key; -import com.intellij.openapi.util.Pair; import com.intellij.patterns.ElementPattern; import com.intellij.psi.*; -import com.intellij.util.ProcessingContext; import com.intellij.util.containers.ContainerUtil; -import org.jetbrains.plugins.groovy.dsl.GroovyClassDescriptor; import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.ClassUtil; import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil; @@ -31,27 +27,17 @@ import java.util.Map; /** * @author peter */ -public class ClassContextFilter implements ContextFilter { - private final Condition> myPattern; +public class ClassContextFilter { - public ClassContextFilter(Condition> pattern) { - myPattern = pattern; - } - - @Override - public boolean isApplicable(GroovyClassDescriptor descriptor, ProcessingContext ctx) { - return myPattern.value(Pair.create(descriptor.getPsiType(), descriptor.getPlaceFile())); - } - - public static ClassContextFilter fromClassPattern(final ElementPattern pattern) { - return new ClassContextFilter(pair -> { - final PsiType type = pair.first; + public static ContextFilter fromClassPattern(ElementPattern pattern) { + return (descriptor, ctx) -> { + PsiType type = descriptor.getPsiType(); return type instanceof PsiClassType && pattern.accepts(((PsiClassType)type).resolve()); - }); + }; } - public static ClassContextFilter subtypeOf(final String typeText) { - return new ClassContextFilter(p -> isSubtype(p.first, p.second, typeText)); + public static ContextFilter subtypeOf(String typeText) { + return (descriptor, ctx) -> isSubtype(descriptor.getPsiType(), descriptor.justGetPlaceFile(), typeText); } public static boolean isSubtype(PsiType checked, PsiFile placeFile, String typeText) {