reduce scope of simplifiable boolean expression inspection (PY-1021)

This commit is contained in:
Dmitry Jemerov
2010-05-31 20:22:52 +04:00
parent 3ca71669d6
commit 0144adf7b3
3 changed files with 33 additions and 8 deletions
@@ -7,16 +7,13 @@ import com.intellij.psi.tree.TokenSet;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.PyTokenTypes;
import com.jetbrains.python.actions.SimplifyBooleanCheckQuickFix;
import com.jetbrains.python.psi.PyBinaryExpression;
import com.jetbrains.python.psi.PyElementType;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Created by IntelliJ IDEA.
* Author: Alexey.Ivanov
* Date: 17.03.2010
* Time: 18:03:35
* @author Alexey.Ivanov
*/
public class PySimplifyBooleanCheckInspection extends LocalInspectionTool {
@Nls
@@ -56,14 +53,31 @@ public class PySimplifyBooleanCheckInspection extends LocalInspectionTool {
super(holder);
}
@Override
public void visitPyConditionalStatementPart(PyConditionalStatementPart node) {
super.visitPyConditionalStatementPart(node);
final PyExpression condition = node.getCondition();
if (condition != null) {
condition.accept(new PyBinaryExpressionVisitor(getHolder()));
}
}
}
private static class PyBinaryExpressionVisitor extends PyInspectionVisitor {
public PyBinaryExpressionVisitor(@Nullable final ProblemsHolder holder) {
super(holder);
}
@Override
public void visitPyBinaryExpression(PyBinaryExpression node) {
super.visitPyBinaryExpression(node);
final PyElementType operator = node.getOperator();
if (node.getRightExpression() == null) {
final PyExpression rightExpression = node.getRightExpression();
if (rightExpression == null) {
return;
}
final String leftExpressionText = node.getLeftExpression().getText();
final String rightExpressionText = node.getRightExpression().getText();
final String rightExpressionText = rightExpression.getText();
if ("True".equals(leftExpressionText) ||
"False".equals(leftExpressionText) ||
"True".equals(rightExpressionText) ||
@@ -1,6 +1,7 @@
package com.jetbrains.python.psi;
import com.intellij.psi.PsiElementVisitor;
import com.jetbrains.python.psi.impl.PyConditionalStatementPartImpl;
/**
* Visitor for python-specific nodes.
@@ -221,4 +222,8 @@ public class PyElementVisitor extends PsiElementVisitor {
public void visitPyStarImportElement(PyStarImportElement node) {
visitPyElement(node);
}
public void visitPyConditionalStatementPart(PyConditionalStatementPart node) {
visitPyElement(node);
}
}
@@ -1,6 +1,7 @@
package com.jetbrains.python.psi.impl;
import com.jetbrains.python.psi.PyConditionalStatementPart;
import com.jetbrains.python.psi.PyElementVisitor;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.PyElementTypes;
import com.intellij.lang.ASTNode;
@@ -21,4 +22,9 @@ public abstract class PyConditionalStatementPartImpl extends PyStatementPartImpl
}
return null;
}
@Override
protected void acceptPyVisitor(PyElementVisitor pyVisitor) {
pyVisitor.visitPyConditionalStatementPart(this);
}
}