PY-871 False positive on unused inspection

This commit is contained in:
Oleg Shpynov
2010-04-21 20:07:01 +04:00
parent ffe03c7a10
commit 16db40abfb
2 changed files with 13 additions and 6 deletions
@@ -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 {
@@ -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;
}
}
}