From dc72ec1873e91d67779f6f42724bd40fbe2c1868 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 21 Jan 2021 21:30:36 +0100 Subject: [PATCH] make method static: delete receiver parameter (IDEA-223325) GitOrigin-RevId: d27b8454d8f653072ff627a8048f89fde3491316 --- .../refactoring/makeStatic/MakeMethodStaticProcessor.java | 5 +++++ .../com/intellij/refactoring/makeStatic/MakeStaticUtil.java | 2 +- .../refactoring/makeMethodStatic/afterReceiverParameter.java | 3 +++ .../makeMethodStatic/beforeReceiverParameter.java | 3 +++ .../com/intellij/java/refactoring/MakeMethodStaticTest.java | 2 ++ 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/makeMethodStatic/afterReceiverParameter.java create mode 100644 java/java-tests/testData/refactoring/makeMethodStatic/beforeReceiverParameter.java diff --git a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeMethodStaticProcessor.java b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeMethodStaticProcessor.java index 14fe50f52c11..4fca8cf54e93 100644 --- a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeMethodStaticProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeMethodStaticProcessor.java @@ -229,6 +229,11 @@ public class MakeMethodStaticProcessor extends MakeMethodOrClassStaticProcessor< modifierList.setModifierProperty(PsiModifier.STATIC, true); modifierList.setModifierProperty(PsiModifier.FINAL, false); modifierList.setModifierProperty(PsiModifier.DEFAULT, false); + + PsiReceiverParameter receiverParameter = PsiTreeUtil.getChildOfType(member.getParameterList(), PsiReceiverParameter.class); + if (receiverParameter != null) { + receiverParameter.delete(); + } } @Override diff --git a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java index b6daefccd198..cfa0e56ad153 100644 --- a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java @@ -51,7 +51,7 @@ public final class MakeStaticUtil { } } } - else if (element instanceof PsiThisExpression) { + else if (element instanceof PsiThisExpression && !(element.getParent() instanceof PsiReceiverParameter)) { PsiJavaCodeReferenceElement qualifier = ((PsiThisExpression) element).getQualifier(); PsiElement refElement = qualifier != null ? qualifier.resolve() : PsiTreeUtil.getParentOfType(element, PsiClass.class); diff --git a/java/java-tests/testData/refactoring/makeMethodStatic/afterReceiverParameter.java b/java/java-tests/testData/refactoring/makeMethodStatic/afterReceiverParameter.java new file mode 100644 index 000000000000..664fa5ceb6bf --- /dev/null +++ b/java/java-tests/testData/refactoring/makeMethodStatic/afterReceiverParameter.java @@ -0,0 +1,3 @@ +public class Test { + public static void test123(int i) { } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/makeMethodStatic/beforeReceiverParameter.java b/java/java-tests/testData/refactoring/makeMethodStatic/beforeReceiverParameter.java new file mode 100644 index 000000000000..72b325978bbb --- /dev/null +++ b/java/java-tests/testData/refactoring/makeMethodStatic/beforeReceiverParameter.java @@ -0,0 +1,3 @@ +public class Test { + public void test123(Test this, int i) { } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/MakeMethodStaticTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/MakeMethodStaticTest.java index 7803c2589e73..917c746104b9 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/MakeMethodStaticTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/MakeMethodStaticTest.java @@ -218,6 +218,8 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase { public void testPreserveParametersAlignment() { doTest(); } + + public void testReceiverParameter() { doTest(); } public void testDelegatePlace() { doTest(true, true);