diff options
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/predicates/ReferencePredicate.java')
-rw-r--r-- | platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/predicates/ReferencePredicate.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/predicates/ReferencePredicate.java b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/predicates/ReferencePredicate.java new file mode 100644 index 000000000000..17570ed8f5df --- /dev/null +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/predicates/ReferencePredicate.java @@ -0,0 +1,31 @@ +package com.intellij.structuralsearch.impl.matcher.predicates; + +import com.intellij.psi.*; +import com.intellij.structuralsearch.StructuralSearchUtil; +import com.intellij.structuralsearch.impl.matcher.handlers.SubstitutionHandler; +import com.intellij.structuralsearch.impl.matcher.MatchContext; +import com.intellij.structuralsearch.impl.matcher.MatchUtils; + +/** + * Handles finding method + */ +public final class ReferencePredicate extends SubstitutionHandler { + public ReferencePredicate(String _name) { + super(_name, true, 1, 1, true); + } + + public boolean match(PsiElement node, PsiElement match, MatchContext context) { + if (StructuralSearchUtil.isIdentifier(match)) { + // since we pickup tokens + match = match.getParent(); + } + + PsiElement result = MatchUtils.getReferencedElement(match); + if (result == null) { + result = match; + //return false; + } + + return handle(result,context); + } +} |