fixed PY-6013 False positive for "Statement has no effect" in import statements in Mako templates

This commit is contained in:
Ekaterina Tuzova
2012-03-19 11:26:50 +04:00
parent 07fd2da820
commit 14c87ddb28
3 changed files with 13 additions and 6 deletions
@@ -12,13 +12,13 @@ import org.jetbrains.annotations.NotNull;
*/
public class ConsoleVisitorFilter implements PythonVisitorFilter {
@Override
public boolean isSupported(@NotNull Class visitorClass, @NotNull PsiFile file) {
public boolean isSupported(@NotNull final Class visitorClass, @NotNull final PsiFile file) {
//if we're in console
if (PydevConsoleRunner.isInPydevConsole(file)) {
//inspections
if (visitorClass == PyUnusedLocalInspectionVisitor.class || visitorClass == PyUnboundLocalVariableInspection.Visitor.class ||
visitorClass == PyStatementEffectInspection.Visitor.class || visitorClass == PySingleQuotedDocstringInspection.Visitor.class ||
visitorClass == PyDocstringInspection.Visitor.class) {
if (visitorClass == PyUnusedLocalInspection.class || visitorClass == PyUnboundLocalVariableInspection.class ||
visitorClass == PyStatementEffectInspection.class || visitorClass == PySingleQuotedDocstringInspection.class ||
visitorClass == PyDocstringInspection.class) {
return false;
}
@@ -6,12 +6,14 @@ import com.intellij.codeInspection.SuppressIntentionAction;
import com.intellij.codeInspection.SuppressionUtil;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.util.PsiTreeUtil;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.actions.PySuppressInspectionFix;
import com.jetbrains.python.codeInsight.controlflow.ScopeOwner;
import com.jetbrains.python.psi.*;
import com.jetbrains.python.psi.impl.PyFileImpl;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -63,7 +65,12 @@ public abstract class PyInspection extends LocalInspectionTool implements Custom
@Override
public boolean isSuppressedFor(PsiElement element) {
return isSuppressedForParent(element, PyStatement.class) ||
final PsiFile file = element.getContainingFile();
boolean isAccepted = true;
if (file instanceof PyFileImpl) {
isAccepted = ((PyFileImpl)file).isAcceptedFor(this.getClass());
}
return !isAccepted || isSuppressedForParent(element, PyStatement.class) ||
isSuppressedForParent(element, PyFunction.class) ||
isSuppressedForParent(element, PyClass.class) ||
isSuppressForCodeFragment(element);
@@ -130,7 +130,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression {
}
}
private boolean isAcceptedFor(@NotNull Class visitorClass) {
public boolean isAcceptedFor(@NotNull Class visitorClass) {
final FileViewProvider viewProvider = getViewProvider();
final Language lang;
if (viewProvider instanceof TemplateLanguageFileViewProvider) {