diff options
Diffstat (limited to 'java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java')
-rw-r--r-- | java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java index 182f79c94bce..e373207222ea 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java @@ -91,10 +91,27 @@ public class ExternalAnnotationsLineMarkerProvider implements LineMarkerProvider private static boolean hasNonCodeAnnotations(@NotNull PsiModifierListOwner element) { Project project = element.getProject(); PsiAnnotation[] externalAnnotations = ExternalAnnotationsManager.getInstance(project).findExternalAnnotations(element); - if (externalAnnotations != null && externalAnnotations.length > 0) { - return true; + if (externalAnnotations != null) { + for (PsiAnnotation annotation : externalAnnotations) { + if (isVisibleAnnotation(annotation)) { + return true; + } + } + } + for (PsiAnnotation annotation : InferredAnnotationsManager.getInstance(project).findInferredAnnotations(element)) { + if (isVisibleAnnotation(annotation)) { + return true; + } } - return InferredAnnotationsManager.getInstance(project).findInferredAnnotations(element).length > 0; + return false; + } + + private static boolean isVisibleAnnotation(@NotNull PsiAnnotation annotation) { + PsiJavaCodeReferenceElement ref = annotation.getNameReferenceElement(); + if (ref == null) return true; + + PsiElement target = ref.resolve(); + return !(target instanceof PsiClass) || JavaDocInfoGenerator.isDocumentedAnnotationType((PsiClass)target); } @Override |