diff options
Diffstat (limited to 'java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/MatchingStrategyBase.java')
-rw-r--r-- | java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/MatchingStrategyBase.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/MatchingStrategyBase.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/MatchingStrategyBase.java new file mode 100644 index 000000000000..df6e0fd46832 --- /dev/null +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/strategies/MatchingStrategyBase.java @@ -0,0 +1,42 @@ +package com.intellij.structuralsearch.impl.matcher.strategies; + +import com.intellij.dupLocator.util.NodeFilter; +import com.intellij.psi.*; + +/** + * Base filtering strategy to find statements + */ +public class MatchingStrategyBase extends JavaElementVisitor implements MatchingStrategy, NodeFilter { + protected boolean result; + + @Override public void visitReferenceExpression(final PsiReferenceExpression psiReferenceExpression) { + visitExpression(psiReferenceExpression); + } + + @Override public void visitCodeBlock(final PsiCodeBlock block) { + result = true; + } + + @Override public void visitCatchSection(final PsiCatchSection section) { + result = true; + } + + @Override public void visitStatement(final PsiStatement statement) { + result = true; + } + + public boolean continueMatching(final PsiElement start) { + return accepts(start); + } + + @Override + public boolean shouldSkip(PsiElement element, PsiElement elementToMatchWith) { + return false; + } + + public boolean accepts(PsiElement element) { + result = false; + if (element!=null) element.accept(this); + return result; + } +} |