diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java index 43bb4cfd7586..d02568215059 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java @@ -32,6 +32,7 @@ import com.intellij.psi.*; import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.impl.source.PsiClassReferenceType; import com.intellij.psi.impl.source.PsiImmediateClassType; +import com.intellij.psi.infos.CandidateInfo; import com.intellij.psi.util.ClassUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -57,10 +58,14 @@ public class AnnotationsHighlightUtil { private static final Logger LOG = Logger.getInstance("com.intellij.codeInsight.daemon.impl.analysis.AnnotationsHighlightUtil"); @Nullable - static HighlightInfo checkNameValuePair(@NotNull PsiNameValuePair pair) { + static HighlightInfo checkNameValuePair(@NotNull PsiNameValuePair pair, + RefCountHolder refCountHolder) { PsiReference ref = pair.getReference(); if (ref == null) return null; PsiMethod method = (PsiMethod)ref.resolve(); + if (refCountHolder != null) { + refCountHolder.registerReference(ref, method != null ? new CandidateInfo(method, PsiSubstitutor.EMPTY) : JavaResolveResult.EMPTY); + } if (method == null) { if (pair.getName() != null) { final String description = JavaErrorMessages.message("annotation.unknown.method", ref.getCanonicalText()); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 03d80a2b7643..de65d25eceb3 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -978,7 +978,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh @Override public void visitNameValuePair(PsiNameValuePair pair) { - myHolder.add(AnnotationsHighlightUtil.checkNameValuePair(pair)); + myHolder.add(AnnotationsHighlightUtil.checkNameValuePair(pair, myRefCountHolder)); if (!myHolder.hasErrorResults()) { PsiIdentifier nameId = pair.getNameIdentifier(); if (nameId != null) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/MarkUsedDefaultAnnotationMethodUnusedInspection.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/MarkUsedDefaultAnnotationMethodUnusedInspection.java new file mode 100644 index 000000000000..9ae62c22b791 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/MarkUsedDefaultAnnotationMethodUnusedInspection.java @@ -0,0 +1,6 @@ +@Annotation("") +class Bar { } +@interface Annotation { + String value(); + int ints() default 0; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingTest.java index 71f7641abd16..e1d36256c71a 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingTest.java @@ -461,6 +461,11 @@ public class LightAdvHighlightingTest extends LightDaemonAnalyzerTestCase { } public void testIllegalWhitespaces() { doTest(false); } + + public void testMarkUsedDefaultAnnotationMethodUnusedInspection() { + setLanguageLevel(LanguageLevel.JDK_1_5); + doTest(true); + } // must stay public for PicoContainer to work public static class MyAnnotator implements Annotator {