diff --git a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java index d5d927cf44fc..9ef1cb394c18 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java @@ -55,7 +55,11 @@ public class ExternalAnnotationsLineMarkerProvider implements LineMarkerProvider final PsiModifierListOwner modifierListOwner = (PsiModifierListOwner)element; final ExternalAnnotationsManager annotationsManager = ExternalAnnotationsManager.getInstance(modifierListOwner.getProject()); PsiAnnotation[] externalAnnotations = annotationsManager.findExternalAnnotations(modifierListOwner); - if (externalAnnotations != null && externalAnnotations.length > 0) { + final InferredAnnotationsManager inferredAnnotationsManager = InferredAnnotationsManager.getInstance(modifierListOwner.getProject()); + PsiAnnotation[] inferredAnnotations = inferredAnnotationsManager.findInferredAnnotations(modifierListOwner); + + if (externalAnnotations != null && externalAnnotations.length > 0 || + inferredAnnotations != null && inferredAnnotations.length > 0) { owner = (PsiModifierListOwner)element; } else if (element instanceof PsiMethod) { final PsiParameter[] parameters = ((PsiMethod)element).getParameterList().getParameters(); @@ -65,6 +69,11 @@ public class ExternalAnnotationsLineMarkerProvider implements LineMarkerProvider owner = (PsiMethod)element; break; } + inferredAnnotations = inferredAnnotationsManager.findInferredAnnotations(parameter); + if (inferredAnnotations != null && inferredAnnotations.length > 0) { + owner = (PsiMethod)element; + break; + } } } } diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index 0052dd5bb8b9..dedd7a99807d 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -18,6 +18,7 @@ package com.intellij.codeInsight.javadoc; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.ExternalAnnotationsManager; +import com.intellij.codeInsight.InferredAnnotationsManager; import com.intellij.codeInsight.documentation.DocumentationManagerUtil; import com.intellij.lang.ASTNode; import com.intellij.lang.LangBundle; @@ -699,10 +700,15 @@ public class JavaDocInfoGenerator { final PsiModifierList ownerModifierList = owner.getModifierList(); if (ownerModifierList == null) return; generateAnnotations(buffer, owner, ownerModifierList.getAnnotations(), false, generateLink); - final PsiAnnotation[] externalAnnotations = ExternalAnnotationsManager.getInstance(owner.getProject()).findExternalAnnotations(owner); - if (externalAnnotations != null) { - generateAnnotations(buffer, owner, externalAnnotations, true, generateLink); + PsiAnnotation[] externalAnnotations = ExternalAnnotationsManager.getInstance(owner.getProject()).findExternalAnnotations(owner); + if (externalAnnotations == null) { + externalAnnotations = new PsiAnnotation[]{}; } + PsiAnnotation[] inferredAnnotations = InferredAnnotationsManager.getInstance(owner.getProject()).findInferredAnnotations(owner); + if (inferredAnnotations != null) { + externalAnnotations = ArrayUtil.mergeArrays(externalAnnotations, inferredAnnotations, PsiAnnotation.ARRAY_FACTORY); + } + generateAnnotations(buffer, owner, externalAnnotations, true, generateLink); } private static void generateAnnotations(StringBuilder buffer,