mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-49543 Suppress GroovyDoc error
This commit is contained in:
+14
-1
@@ -27,6 +27,8 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.lang.groovydoc.psi.api.GrDocComment;
|
||||
import org.jetbrains.plugins.groovy.lang.groovydoc.psi.api.GrDocCommentOwner;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotationArrayInitializer;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotationMemberValue;
|
||||
@@ -83,7 +85,18 @@ public abstract class GroovySuppressableInspectionTool extends LocalInspectionTo
|
||||
}
|
||||
}
|
||||
|
||||
GrMember member = PsiTreeUtil.getNonStrictParentOfType(place, GrMember.class);
|
||||
GrMember member = null;
|
||||
GrDocComment docComment = PsiTreeUtil.getParentOfType(place, GrDocComment.class);
|
||||
if (docComment != null) {
|
||||
GrDocCommentOwner owner = docComment.getOwner();
|
||||
if (owner instanceof GrMember) {
|
||||
member = (GrMember)owner;
|
||||
}
|
||||
}
|
||||
if (member == null) {
|
||||
member = PsiTreeUtil.getNonStrictParentOfType(place, GrMember.class);
|
||||
}
|
||||
|
||||
while (member != null) {
|
||||
GrModifierList modifierList = member.getModifierList();
|
||||
for (String ids : getInspectionIdsSuppressedInAnnotation(modifierList)) {
|
||||
|
||||
+15
-7
@@ -22,7 +22,6 @@ import com.intellij.codeInsight.daemon.HighlightDisplayKey;
|
||||
import com.intellij.codeInspection.InspectionsBundle;
|
||||
import com.intellij.codeInspection.SuppressIntentionAction;
|
||||
import com.intellij.codeInspection.SuppressManager;
|
||||
import com.intellij.codeInspection.SuppressManagerImpl;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
@@ -30,6 +29,7 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.lang.groovydoc.psi.api.GrDocComment;
|
||||
import org.jetbrains.plugins.groovy.lang.groovydoc.psi.api.GrDocCommentOwner;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList;
|
||||
@@ -58,7 +58,17 @@ public class SuppressForMemberFix extends SuppressIntentionAction {
|
||||
if (context == null || context instanceof PsiFile) {
|
||||
return null;
|
||||
}
|
||||
GrDocCommentOwner container = PsiTreeUtil.getParentOfType(context, GrDocCommentOwner.class);
|
||||
|
||||
GrDocCommentOwner container = null;
|
||||
|
||||
GrDocComment docComment = PsiTreeUtil.getParentOfType(context, GrDocComment.class);
|
||||
if (docComment != null) {
|
||||
container = docComment.getOwner();
|
||||
}
|
||||
if (container == null) {
|
||||
container = PsiTreeUtil.getParentOfType(context, GrDocCommentOwner.class);
|
||||
}
|
||||
|
||||
while (container instanceof GrAnonymousClassDefinition || container instanceof GrTypeParameter) {
|
||||
container = PsiTreeUtil.getParentOfType(container, GrDocCommentOwner.class);
|
||||
if (container == null) return null;
|
||||
@@ -88,10 +98,8 @@ public class SuppressForMemberFix extends SuppressIntentionAction {
|
||||
|
||||
public boolean isAvailable(@NotNull final Project project, final Editor editor, @NotNull final PsiElement context) {
|
||||
final GrDocCommentOwner container = getContainer(context);
|
||||
myKey = container instanceof PsiClass
|
||||
? "suppress.inspection.class"
|
||||
: container instanceof PsiMethod ? "suppress.inspection.method" : "suppress.inspection.field";
|
||||
return container != null && context != null && context.getManager().isInProject(context);
|
||||
myKey = container instanceof PsiClass ? "suppress.inspection.class" : container instanceof PsiMethod ? "suppress.inspection.method" : "suppress.inspection.field";
|
||||
return container != null && context.getManager().isInProject(context);
|
||||
}
|
||||
|
||||
public void invoke(@NotNull final Project project, final Editor editor, @NotNull final PsiElement element) throws IncorrectOperationException {
|
||||
@@ -106,7 +114,7 @@ public class SuppressForMemberFix extends SuppressIntentionAction {
|
||||
}
|
||||
|
||||
private static void addSuppressAnnotation(final Project project, final GrModifierList modifierList, final String id) throws IncorrectOperationException {
|
||||
PsiAnnotation annotation = modifierList.findAnnotation(SuppressManagerImpl.SUPPRESS_INSPECTIONS_ANNOTATION_NAME);
|
||||
PsiAnnotation annotation = modifierList.findAnnotation(SuppressManager.SUPPRESS_INSPECTIONS_ANNOTATION_NAME);
|
||||
final GrExpression toAdd = GroovyPsiElementFactory.getInstance(project).createExpressionFromText("\"" + id + "\"");
|
||||
if (annotation != null) {
|
||||
final PsiAnnotationMemberValue value = annotation.findDeclaredAttributeValue(null);
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ public class GrAnnotationImpl extends GrStubElementBase<GrAnnotationStub> implem
|
||||
return PsiImplUtil.findDeclaredAttributeValue(this, attributeName);
|
||||
}
|
||||
|
||||
public <T extends PsiAnnotationMemberValue> T setDeclaredAttributeValue(@NonNls String attributeName, T value) {
|
||||
public <T extends PsiAnnotationMemberValue> T setDeclaredAttributeValue(@Nullable @NonNls String attributeName, T value) {
|
||||
return (T)PsiImplUtil.setDeclaredAttributeValue(this, attributeName, value, ANNOTATION_CREATOR);
|
||||
}
|
||||
|
||||
|
||||
@@ -840,4 +840,20 @@ char c = 'a'
|
||||
myFixture.testHighlighting(true, false, true)
|
||||
}
|
||||
|
||||
public void testSuppressedErrorInGroovyDoc() {
|
||||
myFixture.configureByText('_.groovy', '''\
|
||||
class Class2 {
|
||||
|
||||
|
||||
/** dependency injection for {@link GrailsFilterInvocationDefinition} */
|
||||
@SuppressWarnings("GroovyDocCheck")
|
||||
static main(args) {}
|
||||
|
||||
/** dependency injection for {@link <error descr="Cannot resolve symbol 'GrailsFilterInvocationDefinition'">GrailsFilterInvocationDefinition</error>} */
|
||||
static main2(args) {}
|
||||
}''')
|
||||
myFixture.enableInspections(new GroovyDocCheckInspection())
|
||||
myFixture.testHighlighting(true, false, true)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user