diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java index 98b582f73545..29719754ba21 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationsHighlightUtil.java @@ -458,9 +458,11 @@ public class AnnotationsHighlightUtil { public static HighlightInfo checkTargetAnnotationDuplicates(PsiAnnotation annotation) { PsiJavaCodeReferenceElement nameRef = annotation.getNameReferenceElement(); if (nameRef == null) return null; + PsiElement resolved = nameRef.resolve(); - if (!(resolved instanceof PsiClass) || - !CommonClassNames.TARGET_ANNOTATION_FQ_NAME.equals(((PsiClass) resolved).getQualifiedName())) return null; + if (!(resolved instanceof PsiClass) || !CommonClassNames.JAVA_LANG_ANNOTATION_TARGET.equals(((PsiClass)resolved).getQualifiedName())) { + return null; + } PsiNameValuePair[] attributes = annotation.getParameterList().getAttributes(); if (attributes.length < 1) return null; @@ -483,6 +485,7 @@ public class AnnotationsHighlightUtil { return null; } + @Nullable public static HighlightInfo checkFunctionalInterface(PsiAnnotation annotation) { final String errorMessage = LambdaUtil.checkFunctionalInterface(annotation); if (errorMessage != null) { diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java index c1db5cd259a7..b2b44a4e8af0 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java @@ -376,7 +376,7 @@ public class PsiImplUtil { if (!annotationType.isAnnotationType()) return null; PsiModifierList modifierList = annotationType.getModifierList(); if (modifierList == null) return null; - PsiAnnotation target = modifierList.findAnnotation(CommonClassNames.TARGET_ANNOTATION_FQ_NAME); + PsiAnnotation target = modifierList.findAnnotation(CommonClassNames.JAVA_LANG_ANNOTATION_TARGET); if (target == null) return DEFAULT_TARGETS; // if omitted it is applicable to all but Java 8 TYPE_USE/TYPE_PARAMETERS targets PsiAnnotationMemberValue value = target.findAttributeValue(null); diff --git a/platform/core-api/src/com/intellij/psi/CommonClassNames.java b/platform/core-api/src/com/intellij/psi/CommonClassNames.java index afbe63830309..c7b9058a5724 100644 --- a/platform/core-api/src/com/intellij/psi/CommonClassNames.java +++ b/platform/core-api/src/com/intellij/psi/CommonClassNames.java @@ -33,14 +33,18 @@ public interface CommonClassNames { @NonNls String JAVA_LANG_THROWABLE = "java.lang.Throwable"; @NonNls String JAVA_LANG_EXCEPTION = "java.lang.Exception"; @NonNls String JAVA_LANG_ERROR = "java.lang.Error"; + @NonNls String JAVA_LANG_ASSERTION_ERROR = "java.lang.AssertionError"; @NonNls String JAVA_LANG_RUNTIME_EXCEPTION = "java.lang.RuntimeException"; @NonNls String JAVA_LANG_AUTO_CLOSEABLE = "java.lang.AutoCloseable"; @NonNls String JAVA_LANG_ITERABLE = "java.lang.Iterable"; @NonNls String JAVA_UTIL_ITERATOR = "java.util.Iterator"; + @NonNls String JAVA_LANG_RUNNABLE = "java.lang.Runnable"; + @NonNls String JAVA_LANG_DEPRECATED = "java.lang.Deprecated"; + @NonNls String JAVA_LANG_ANNOTATION_TARGET = "java.lang.annotation.Target"; @NonNls String JAVA_LANG_ANNOTATION_INHERITED = "java.lang.annotation.Inherited"; @NonNls String JAVA_LANG_ANNOTATION_ANNOTATION = "java.lang.annotation.Annotation"; @@ -50,7 +54,10 @@ public interface CommonClassNames { @NonNls String JAVA_UTIL_COLLECTIONS = "java.util.Collections"; @NonNls String JAVA_UTIL_COLLECTION = "java.util.Collection"; @NonNls String JAVA_UTIL_MAP = "java.util.Map"; + @NonNls String JAVA_UTIL_MAP_ENTRY = "java.util.Map.Entry"; + @NonNls String JAVA_UTIL_HASH_MAP = "java.util.HashMap"; @NonNls String JAVA_UTIL_LIST = "java.util.List"; + @NonNls String JAVA_UTIL_ARRAY_LIST = "java.util.ArrayList"; @NonNls String JAVA_UTIL_SET = "java.util.Set"; @NonNls String JAVA_UTIL_PROPERTIES = "java.util.Properties"; @NonNls String JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE = "java.util.PropertyResourceBundle"; @@ -59,11 +66,9 @@ public interface CommonClassNames { @NonNls String JAVA_UTIL_DICTIONARY = "java.util.Dictionary"; @NonNls String JAVA_UTIL_COMPARATOR = "java.util.Comparator"; - /** @deprecated not that common (to remove in IDEA 13) */ - @SuppressWarnings("UnusedDeclaration") @NonNls String JAVA_SQL_DATE = "java.sql.Date"; - @NonNls String JAVA_IO_SERIALIZABLE = "java.io.Serializable"; @NonNls String JAVA_IO_EXTERNALIZABLE = "java.io.Externalizable"; + @NonNls String JAVA_IO_FILE = "java.io.File"; @NonNls String JAVA_LANG_STRING = "java.lang.String"; @NonNls String JAVA_LANG_STRING_SHORT = "String"; @@ -83,17 +88,17 @@ public interface CommonClassNames { @NonNls String JAVA_LANG_CLONEABLE = "java.lang.Cloneable"; @NonNls String JAVA_LANG_COMPARABLE = "java.lang.Comparable"; - @NonNls String CLASS_FILE_EXTENSION = ".class"; @NonNls String JAVA_UTIL_CONCURRENT_FUTURE = "java.util.concurrent.Future"; - @NonNls String JAVA_UTIL_ARRAY_LIST = "java.util.ArrayList"; + @NonNls String JAVA_UTIL_CONCURRENT_CALLABLE = "java.util.concurrent.Callable"; @NonNls String JAVA_LANG_INVOKE_MH_POLYMORPHIC = "java.lang.invoke.MethodHandle.PolymorphicSignature"; - @NonNls String TARGET_ANNOTATION_FQ_NAME = "java.lang.annotation.Target"; - @NonNls String JAVA_LANG_RUNNABLE = "java.lang.Runnable"; - @NonNls String JAVA_IO_FILE = "java.io.File"; - @NonNls String JAVA_LANG_ASSERTION_ERROR = "java.lang.AssertionError"; - @NonNls String JAVA_UTIL_CONCURRENT_CALLABLE = "java.util.concurrent.Callable"; - @NonNls String JAVA_UTIL_MAP_ENTRY = "java.util.Map.Entry"; - @NonNls String JAVA_UTIL_HASH_MAP = "java.util.HashMap"; + + @NonNls String CLASS_FILE_EXTENSION = ".class"; + + /** @deprecated not that common (to remove in IDEA 13) */ + @SuppressWarnings("UnusedDeclaration") @NonNls String JAVA_SQL_DATE = "java.sql.Date"; + + /** @deprecated use {@link #JAVA_LANG_ANNOTATION_TARGET} (to remove in IDEA 14) */ + @SuppressWarnings("UnusedDeclaration") @NonNls String TARGET_ANNOTATION_FQ_NAME = JAVA_LANG_ANNOTATION_TARGET; }