From 218a25f7764df3696f75490afb1eabf8e9b91933 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 18 Mar 2020 12:59:25 +0700 Subject: [PATCH] LightTypeElement#getText: include annotations Otherwise JavaChangeInfoImpl.fillOldParams thinks that old parameter type has no annotation, so if we removed an annotation, it's considered unchanged Fixes IDEA-235090 "Change signature" action removing @NotNull does nothing GitOrigin-RevId: 419990f23330090fc5bd8f92500328db7bd5e15b --- .../src/com/intellij/psi/impl/light/LightTypeElement.java | 2 +- .../refactoring/changeSignature/RemoveAnnotation.java | 8 ++++++++ .../changeSignature/RemoveAnnotation_after.java | 8 ++++++++ .../intellij/java/refactoring/ChangeSignatureTest.java | 7 +++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation.java create mode 100644 java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation_after.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/light/LightTypeElement.java b/java/java-psi-impl/src/com/intellij/psi/impl/light/LightTypeElement.java index 3546616593ef..91c9bff0275e 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/light/LightTypeElement.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/light/LightTypeElement.java @@ -24,7 +24,7 @@ public class LightTypeElement extends LightElement implements PsiTypeElement { @Override public String getText() { - return myType.getPresentableText(); + return myType.getPresentableText(true); } @Override diff --git a/java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation.java b/java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation.java new file mode 100644 index 000000000000..a119e418cfe9 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation.java @@ -0,0 +1,8 @@ +import java.lang.annotation.*; + +class X { + void test(@Foo int x) {} + + @Target(ElementType.TYPE_USE) + @interface Foo +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation_after.java b/java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation_after.java new file mode 100644 index 000000000000..531a3e30cd76 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/RemoveAnnotation_after.java @@ -0,0 +1,8 @@ +import java.lang.annotation.*; + +class X { + void test(int x) {} + + @Target(ElementType.TYPE_USE) + @interface Foo +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java index b5e3305461db..c7cfcb5f5628 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java @@ -560,6 +560,13 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { }; }, false); } + + public void testRemoveAnnotation() { + doTest(null, null, null, method -> new ParameterInfoImpl[]{ + ParameterInfoImpl.create(0).withName("x").withType(PsiType.INT) + }, false); + + } /* workers */ }