fix jsp suppressions:

1. fix "suppress for file" inside a jsp file
2. allow "suppress for statement" if it's possible
3. forbid "suppress for member" if a member is synthetic
This commit is contained in:
Dmitry Batkovich
2017-05-25 15:42:59 +03:00
parent e117316b76
commit dedd951e39
3 changed files with 5 additions and 17 deletions

View File

@@ -17,6 +17,7 @@ package com.intellij.codeInsight.daemon.impl.actions;
import com.intellij.codeInsight.daemon.HighlightDisplayKey;
import com.intellij.codeInspection.JavaSuppressionUtil;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
@@ -40,17 +41,8 @@ public class SuppressByJavaCommentFix extends SuppressByCommentFix {
@Override
@Nullable
public PsiElement getContainer(PsiElement context) {
if (hasJspMethodCallAsParent(context)) return null;
return PsiTreeUtil.getParentOfType(context, PsiStatement.class, false);
}
private static boolean hasJspMethodCallAsParent(PsiElement context) {
while (true) {
PsiMethod method = PsiTreeUtil.getParentOfType(context, PsiMethod.class);
if (method == null) return false;
if (method instanceof SyntheticElement) return true;
context = method;
}
PsiStatement statement = PsiTreeUtil.getParentOfType(context, PsiStatement.class, false);
return statement != null && JavaLanguage.INSTANCE.equals(statement.getLanguage()) ? statement : null;
}
@Override

View File

@@ -76,7 +76,7 @@ public class SuppressFix extends AbstractBatchSuppressByNoInspectionCommentFix {
container = PsiTreeUtil.getParentOfType(container, PsiJavaDocumentedElement.class);
if (container == null) return null;
}
return (PsiJavaDocumentedElement)container;
return container instanceof SyntheticElement ? null : (PsiJavaDocumentedElement)container;
}
@Override

View File

@@ -19,7 +19,6 @@ package com.intellij.codeInspection;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlFile;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.ThreeState;
import org.jetbrains.annotations.NonNls;
@@ -138,10 +137,7 @@ public abstract class XmlSuppressableInspectionTool extends LocalInspectionTool
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiElement element = descriptor.getPsiElement();
PsiElement container = getContainer(element);
if (container instanceof XmlFile) {
myProvider.suppressForFile(element, myId);
}
myProvider.suppressForFile(element, myId);
}
@Nullable