diff options
Diffstat (limited to 'java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java')
-rw-r--r-- | java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java new file mode 100644 index 000000000000..e0d86824a920 --- /dev/null +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java @@ -0,0 +1,33 @@ +package com.intellij.structuralsearch.impl.matcher.predicates; + +import com.intellij.psi.*; +import com.intellij.structuralsearch.impl.matcher.handlers.MatchPredicate; +import com.intellij.structuralsearch.impl.matcher.MatchContext; +import com.intellij.structuralsearch.impl.matcher.MatchUtils; + +/** + * Handler for reading + */ +public final class WritePredicate extends MatchPredicate { + public boolean match(PsiElement patternNode, PsiElement matchedNode, MatchContext context) { + if (matchedNode instanceof PsiIdentifier) { + matchedNode = matchedNode.getParent(); + } + if (( matchedNode instanceof PsiReferenceExpression && + matchedNode.getParent() instanceof PsiAssignmentExpression && + ((PsiAssignmentExpression)matchedNode.getParent()).getLExpression() == matchedNode && + MatchUtils.getReferencedElement(matchedNode) instanceof PsiVariable + ) || + ( + matchedNode instanceof PsiVariable && + ((PsiVariable)matchedNode).getInitializer()!=null + ) || + matchedNode.getParent() instanceof PsiPostfixExpression || + matchedNode.getParent() instanceof PsiPrefixExpression + ) { + return true; + } else { + return false; + } + } +} |