From 16db40abfb3120219f87223ce3ee2f4100a9a13b Mon Sep 17 00:00:00 2001 From: Oleg Shpynov Date: Wed, 21 Apr 2010 20:07:01 +0400 Subject: [PATCH] PY-871 False positive on unused inspection --- .../controlflow/PyControlFlowBuilder.java | 5 ++++- .../psi/impl/PyAssignmentStatementNavigator.java | 14 +++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java b/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java index 781587b9fd1e..b9bfb40f111a 100644 --- a/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java +++ b/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java @@ -9,6 +9,7 @@ import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.python.psi.*; +import com.jetbrains.python.psi.impl.PyAssignmentStatementNavigator; import com.jetbrains.python.psi.impl.PyAugAssignmentStatementNavigator; import com.jetbrains.python.psi.impl.PyImportStatementNavigator; import org.jetbrains.annotations.NotNull; @@ -127,7 +128,9 @@ public class PyControlFlowBuilder extends PyRecursiveElementVisitor { final PsiElement[] children = node.getChildren(); // Case of non qualified reference if (children.length == 0){ - final ReadWriteInstruction instruction = new ReadWriteInstruction(myBuilder, node, node.getName(), ReadWriteInstruction.ACCESS.WRITE); + final ReadWriteInstruction.ACCESS access = node.getParent() instanceof PySliceExpression + ? ReadWriteInstruction.ACCESS.READ : ReadWriteInstruction.ACCESS.WRITE; + final ReadWriteInstruction instruction = new ReadWriteInstruction(myBuilder, node, node.getName(), access); myBuilder.addNode(instruction); myBuilder.checkPending(instruction); } else { diff --git a/python/src/com/jetbrains/python/psi/impl/PyAssignmentStatementNavigator.java b/python/src/com/jetbrains/python/psi/impl/PyAssignmentStatementNavigator.java index acead7ae9ef0..f4d891f04c19 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyAssignmentStatementNavigator.java +++ b/python/src/com/jetbrains/python/psi/impl/PyAssignmentStatementNavigator.java @@ -15,11 +15,15 @@ public class PyAssignmentStatementNavigator { @Nullable public static PyAssignmentStatement getStatementByTarget(final PsiElement element){ - final PyAssignmentStatement parent = PsiTreeUtil.getParentOfType(element, PyAssignmentStatement.class); - if (parent != null){ - for (PyExpression expression : parent.getTargets()) { - if (element == expression || element.getParent() == expression){ - return parent; + final PyAssignmentStatement assignmentStatement = PsiTreeUtil.getParentOfType(element, PyAssignmentStatement.class); + if (assignmentStatement != null){ + for (PyExpression expression : assignmentStatement.getTargets()) { + if (element == expression){ + return assignmentStatement; + } + final PsiElement parent = element.getParent(); + if (parent == expression && parent.getFirstChild() == element && parent.getLastChild() == element){ + return assignmentStatement; } } }