From 72707aa169ea8a936eb6d526ce172b40c9d0031a Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 25 Oct 2010 12:53:18 +0400 Subject: [PATCH] extract method: exclude unused type parameters mentioned in return type (IDEA-58456) --- .../extractMethod/ExtractMethodProcessor.java | 2 +- .../refactoring/extractMethod/UnusedGenerics.java | 6 ++++++ .../extractMethod/UnusedGenerics_after.java | 10 ++++++++++ .../com/intellij/refactoring/ExtractMethodTest.java | 4 ++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/extractMethod/UnusedGenerics.java create mode 100644 java/java-tests/testData/refactoring/extractMethod/UnusedGenerics_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java index 7d6c1ae3e308..fd2ea4265790 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -299,7 +299,7 @@ public class ExtractMethodProcessor implements MatchProvider { if (myOutputVariable != null) { elements = ArrayUtil.append(myElements, myOutputVariable, PsiElement.class); } - if (myCodeFragmentMember != null) { + if (myCodeFragmentMember != null && myReturnType == ((PsiMethod)myCodeFragmentMember).getReturnType()) { elements = ArrayUtil.append(myElements, ((PsiMethod)myCodeFragmentMember).getReturnTypeElement(), PsiElement.class); } } diff --git a/java/java-tests/testData/refactoring/extractMethod/UnusedGenerics.java b/java/java-tests/testData/refactoring/extractMethod/UnusedGenerics.java new file mode 100644 index 000000000000..6882d5492dce --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/UnusedGenerics.java @@ -0,0 +1,6 @@ +class Test { + public T method(Class clazz) { + System.out.println(); + return null; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethod/UnusedGenerics_after.java b/java/java-tests/testData/refactoring/extractMethod/UnusedGenerics_after.java new file mode 100644 index 000000000000..e91851967464 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/UnusedGenerics_after.java @@ -0,0 +1,10 @@ +class Test { + public T method(Class clazz) { + newMethod(); + return null; + } + + private void newMethod() { + System.out.println(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java index a3ce352ff46d..5c8b32a9d69c 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java @@ -372,6 +372,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase { doTest(); } + public void testUnusedGenerics() throws Exception { + doTest(); + } + public void testParamsUsedInLocalClass() throws Exception { doTest(); }