From 1b0f032a139267eaa0f79f4bf3f183d4111e9c59 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 23 Apr 2013 16:17:41 +0200 Subject: [PATCH] extract class: leave reference parameters untouched after replacement (IDEA-106017) --- .../extractclass/usageInfo/RetargetStaticMethodCall.java | 8 ++------ .../implicitReferenceTypeParameters/after/Extracted.java | 5 +++++ .../implicitReferenceTypeParameters/after/Test.java | 6 ++++++ .../implicitReferenceTypeParameters/before/Test.java | 7 +++++++ .../com/intellij/refactoring/ExtractClassTest.java | 4 ++++ 5 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Extracted.java create mode 100644 java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Test.java create mode 100644 java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/before/Test.java diff --git a/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RetargetStaticMethodCall.java b/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RetargetStaticMethodCall.java index 03a14133210e..6aaacc6fafc1 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RetargetStaticMethodCall.java +++ b/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RetargetStaticMethodCall.java @@ -15,10 +15,7 @@ */ package com.intellij.refactoring.extractclass.usageInfo; -import com.intellij.psi.PsiExpression; -import com.intellij.psi.PsiExpressionList; -import com.intellij.psi.PsiMethodCallExpression; -import com.intellij.psi.PsiReferenceExpression; +import com.intellij.psi.*; import com.intellij.refactoring.psi.MutationUtils; import com.intellij.refactoring.util.FixableUsageInfo; import com.intellij.util.IncorrectOperationException; @@ -39,8 +36,7 @@ public class RetargetStaticMethodCall extends FixableUsageInfo { if (qualifier == null) { MutationUtils.replaceExpression(delegateClassName + '.' + call.getText(), call); } else { - final PsiExpressionList parameterList = call.getArgumentList(); - MutationUtils.replaceExpression(delegateClassName + '.' + methodExpression.getReferenceName() +parameterList.getText() , call); + MutationUtils.replaceExpression(delegateClassName , qualifier); } } } diff --git a/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Extracted.java b/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Extracted.java new file mode 100644 index 000000000000..50d8f56f0625 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Extracted.java @@ -0,0 +1,5 @@ +public class Extracted { + public static T foo() { + return null; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Test.java b/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Test.java new file mode 100644 index 000000000000..1260839b7efc --- /dev/null +++ b/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/after/Test.java @@ -0,0 +1,6 @@ +class Test { + + { + String s = true ? Extracted.foo() : ""; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/before/Test.java b/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/before/Test.java new file mode 100644 index 000000000000..57a1130dc932 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractClass/implicitReferenceTypeParameters/before/Test.java @@ -0,0 +1,7 @@ +class Test { + public static T foo() { return null; } + + { + String s = true ? Test.foo() : ""; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java index 0199e1adc048..67b9b83a345f 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java @@ -101,6 +101,10 @@ public class ExtractClassTest extends MultiFileTestCase{ doTestMethod(); } + public void testImplicitReferenceTypeParameters() throws Exception { + doTestMethod(); + } + public void testNoConstructorParams() throws Exception { doTestFieldAndMethod(); }