diff --git a/java/java-tests/testData/codeInsight/externalAnnotations/content/anno/i18n/annotations.xml b/java/java-tests/testData/codeInsight/externalAnnotations/content/anno/i18n/annotations.xml new file mode 100644 index 000000000000..4f726baa822b --- /dev/null +++ b/java/java-tests/testData/codeInsight/externalAnnotations/content/anno/i18n/annotations.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/externalAnnotations/src/i18n/Foo.java b/java/java-tests/testData/codeInsight/externalAnnotations/src/i18n/Foo.java new file mode 100644 index 000000000000..237c7defcff2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/externalAnnotations/src/i18n/Foo.java @@ -0,0 +1,9 @@ +package i18n; +public class Foo { + public Foo(String s) { + } + + { + new Foo("abc de"); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java index c7cee2d0045d..90149e44e51a 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java @@ -3,6 +3,7 @@ package com.intellij.java.codeInsight; import com.intellij.codeInsight.intention.AddAnnotationPsiFix; import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.codeInspection.i18n.I18nInspection; import com.intellij.java.JavaBundle; import com.intellij.openapi.application.ex.PathManagerEx; import com.intellij.openapi.module.Module; @@ -78,6 +79,15 @@ public class ExternalAnnotationsTest extends UsefulTestCase { true); } + public void testHardcodedStringLiteralWithExternalPackageAnnotation() { + myFixture.configureByFiles("src/i18n/Foo.java", "content/anno/i18n/annotations.xml"); + I18nInspection inspection = new I18nInspection(); + inspection.setIgnoreForAllButNls(true); + myFixture.enableInspections(inspection); + + myFixture.testHighlighting(true, false, false, "src/i18n/Foo.java"); + } + public void testBringToSrc() { myFixture.configureByFiles("src/toSrc/Foo.java", "content/anno/toSrc/annotations.xml"); diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java index c0fdc900a5f3..9de286b38286 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java @@ -486,7 +486,15 @@ public abstract class NlsInfo { String packageName = ((PsiClassOwner)containingFile).getPackageName(); PsiPackage aPackage = JavaPsiFacade.getInstance(method.getProject()).findPackage(packageName); if (aPackage != null) { - return fromAnnotationOwner(aPackage.getAnnotationList()); + NlsInfo info = fromAnnotationOwner(aPackage.getAnnotationList()); + if (info != Unspecified.UNKNOWN) { + return info; + } + + PsiAnnotation annotation = AnnotationUtil.findAnnotation(aPackage, ANNOTATION_NAMES, false); + if (annotation != null) { + return fromAnnotation(annotation); + } } } return Unspecified.UNKNOWN;