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 45fd55ff4ac0..fbeb184239ec 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -1140,7 +1140,8 @@ public class ExtractMethodProcessor implements MatchProvider { } } PsiDeclarationStatement statement = myElementFactory.createVariableDeclarationStatement(name, type, myMethodCall); - statement = (PsiDeclarationStatement)addToMethodCallLocation(statement); + statement = + (PsiDeclarationStatement)JavaCodeStyleManager.getInstance(myProject).shortenClassReferences(addToMethodCallLocation(statement)); PsiVariable var = (PsiVariable)statement.getDeclaredElements()[0]; myMethodCall = (PsiMethodCallExpression)var.getInitializer(); if (myOutputVariable != null) { diff --git a/java/java-tests/testData/refactoring/extractMethod/ShortenClassRefsInNewReturnType.java b/java/java-tests/testData/refactoring/extractMethod/ShortenClassRefsInNewReturnType.java new file mode 100644 index 000000000000..80fc8ee5008d --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/ShortenClassRefsInNewReturnType.java @@ -0,0 +1,8 @@ +import java.util.ArrayList; + +class Test { + Object foo() { + Object list = new ArrayList(); + return list; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethod/ShortenClassRefsInNewReturnType_after.java b/java/java-tests/testData/refactoring/extractMethod/ShortenClassRefsInNewReturnType_after.java new file mode 100644 index 000000000000..9dd120ab2db4 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/ShortenClassRefsInNewReturnType_after.java @@ -0,0 +1,16 @@ +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collection; + +class Test { + Object foo() { + Object list = newMethod(); + return list; + } + + @NotNull + private Collection newMethod() { + return new ArrayList(); + } +} \ 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 35946793c3a8..eb8a1492e366 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java @@ -744,6 +744,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase { doTestReturnTypeChanged(PsiType.INT); } + public void testShortenClassRefsInNewReturnType() throws Exception { + doTestReturnTypeChanged(PsiType.getTypeByName(CommonClassNames.JAVA_UTIL_COLLECTION, getProject(), GlobalSearchScope.allScope(getProject()))); + } + public void testPassFieldAsParameterAndMakeStatic() throws Exception { doTestPassFieldsAsParams(); }