diff options
author | Tor Norbye <tnorbye@google.com> | 2014-07-16 18:07:37 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-07-16 18:09:03 -0700 |
commit | 65f60eb9011bb2c549a6d83ae31257480368ddc5 (patch) | |
tree | de0dca03bec460e8797332e5f460400f5cf6485f /plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java | |
parent | 9ea67227e8fdcf8ed37e65bb96e32767291d0f4f (diff) | |
download | idea-65f60eb9011bb2c549a6d83ae31257480368ddc5.tar.gz |
Snapshot idea/138.1029 from git://git.jetbrains.org/idea/community.git
Update from idea/138.538 to idea/138.1029
Change-Id: I828f829a968439a99ec67640990c18ff7c9b58ce
Diffstat (limited to 'plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java')
-rw-r--r-- | plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java b/plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/predicates/WritePredicate.java new file mode 100644 index 000000000000..e0d86824a920 --- /dev/null +++ b/plugins/structuralsearch/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; + } + } +} |