From cee658173431fdc8d8fa4f0330213f0f0ecc828c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 9 Mar 2016 12:39:23 +0100 Subject: [PATCH] generify: collapse to diamond when applicable --- .../com/intellij/refactoring/typeCook/Util.java | 5 +++++ .../typeCook/convertToDiamond/after/Test.1.items | 1 + .../typeCook/convertToDiamond/after/Test.items | 1 + .../typeCook/convertToDiamond/after/test.java | 6 ++++++ .../typeCook/convertToDiamond/before/test.java | 6 ++++++ .../com/intellij/refactoring/TypeCookTest.java | 14 ++++++++++++++ 6 files changed, 33 insertions(+) create mode 100644 java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.1.items create mode 100644 java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.items create mode 100644 java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/test.java create mode 100644 java/java-tests/testData/refactoring/typeCook/convertToDiamond/before/test.java diff --git a/java/java-impl/src/com/intellij/refactoring/typeCook/Util.java b/java/java-impl/src/com/intellij/refactoring/typeCook/Util.java index 54149613704b..09370d3afe5a 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeCook/Util.java +++ b/java/java-impl/src/com/intellij/refactoring/typeCook/Util.java @@ -17,6 +17,7 @@ package com.intellij.refactoring.typeCook; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; +import com.intellij.psi.impl.PsiDiamondTypeUtil; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.typeCook.deductive.PsiTypeVariableFactory; @@ -405,6 +406,10 @@ public class Util { list .add(factory.createTypeElement(aType == null ? PsiType.getJavaLangObject(list.getManager(), list.getResolveScope()) : aType)); } + + if (PsiDiamondTypeUtil.canCollapseToDiamond(newx, newx, newx.getType())) { + PsiDiamondTypeUtil.replaceExplicitWithDiamond(list); + } } } else { diff --git a/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.1.items b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.1.items new file mode 100644 index 000000000000..3b9e27f05d2c --- /dev/null +++ b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.1.items @@ -0,0 +1 @@ +java.util.ArrayList\nnew diff --git a/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.items b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.items new file mode 100644 index 000000000000..f994691fb0c5 --- /dev/null +++ b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.items @@ -0,0 +1 @@ +java.util.ArrayList\nnew diff --git a/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/test.java b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/test.java new file mode 100644 index 000000000000..89c685c83acb --- /dev/null +++ b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/test.java @@ -0,0 +1,6 @@ +import java.util.ArrayList; + +class Test +{ + ArrayList l = new ArrayList<>(); +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/typeCook/convertToDiamond/before/test.java b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/before/test.java new file mode 100644 index 000000000000..e61c977ebe95 --- /dev/null +++ b/java/java-tests/testData/refactoring/typeCook/convertToDiamond/before/test.java @@ -0,0 +1,6 @@ +import java.util.ArrayList; + +class Test +{ + ArrayList l = new ArrayList(); +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java b/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java index 861c5ef62b1d..78ac7052b2a4 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java @@ -17,9 +17,11 @@ package com.intellij.refactoring; import com.intellij.JavaTestUtil; import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.typeCook.Settings; @@ -667,6 +669,18 @@ public class TypeCookTest extends MultiFileTestCase { start(); } + public void testConvertToDiamond() throws Exception { + final LanguageLevelProjectExtension levelProjectExtension = LanguageLevelProjectExtension.getInstance(getProject()); + final LanguageLevel oldLevel = levelProjectExtension.getLanguageLevel(); + try { + levelProjectExtension.setLanguageLevel(LanguageLevel.JDK_1_8); + start(); + } + finally { + levelProjectExtension.setLanguageLevel(oldLevel); + } + } + public void start() throws Exception { start(false); }