diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java index 8dd76a66a12e..aaba57652dee 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementsAnnotationsHandler.java @@ -50,7 +50,10 @@ public interface OverrideImplementsAnnotationsHandler { if (AnnotationUtil.isAnnotated(source, annotation, flags) && !AnnotationUtil.isAnnotated(target, annotation, flags)) { PsiModifierList modifierList = target.getModifierList(); assert modifierList != null : target; - AddAnnotationPsiFix.addPhysicalAnnotation(annotation, PsiNameValuePair.EMPTY_ARRAY, modifierList); + PsiAnnotation srcAnnotation = AnnotationUtil.findAnnotation(source, annotation); + PsiNameValuePair[] valuePairs = srcAnnotation != null ? srcAnnotation.getParameterList().getAttributes() + : PsiNameValuePair.EMPTY_ARRAY; + AddAnnotationPsiFix.addPhysicalAnnotation(annotation, valuePairs, modifierList); } } } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy index db08dc227a94..76dfc69dd479 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy @@ -284,7 +284,7 @@ class Test implements A { } void testCustomOverrideImplementsHandler() throws Exception { - myFixture.addClass """package a; public @interface A { }""" + myFixture.addClass """package a; public @interface A { String value();}""" PlatformTestUtil.registerExtension(Extensions.getRootArea(), OverrideImplementsAnnotationsHandler.EP_NAME, new OverrideImplementsAnnotationsHandler() { @Override @@ -297,7 +297,7 @@ class Test implements A { import a.*; interface I { - @A List i(@A String p); + @A("") List i(@A("a") String p); } class C implements I { @@ -311,13 +311,13 @@ class Test implements A { import a.*; interface I { - @A List i(@A String p); + @A("") List i(@A("a") String p); } class C implements I { - @A + @A("") @Override - public List i(@A String p) { + public List i(@A("a") String p) { return null; } }""".stripIndent()