From 21a0d8565e7453fb258fc90b8afb5a1a5b22e503 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 18 Sep 2012 12:32:58 +0200 Subject: [PATCH] simplify ? extends Object (IDEA-91631; IDEA-91144) --- .../src/com/intellij/psi/GenericsUtil.java | 1 + .../afterSimplifyObjectWildcard.java | 12 ++++++++++ .../beforeSimplifyObjectWildcard.java | 10 ++++++++ .../afterSimplifiedResultedType.java | 24 +++++++++++++++++++ .../beforeSimplifiedResultedType.java | 24 +++++++++++++++++++ .../codeInsight/OverrideImplementTest.java | 1 + .../refactoring/IntroduceParameterTest.java | 4 ++++ 7 files changed, 76 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/overrideImplement/afterSimplifyObjectWildcard.java create mode 100644 java/java-tests/testData/codeInsight/overrideImplement/beforeSimplifyObjectWildcard.java create mode 100644 java/java-tests/testData/refactoring/introduceParameter/afterSimplifiedResultedType.java create mode 100644 java/java-tests/testData/refactoring/introduceParameter/beforeSimplifiedResultedType.java diff --git a/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java b/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java index 18a71e4c5944..30f42dc98f22 100644 --- a/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java @@ -258,6 +258,7 @@ public class GenericsUtil { if (((PsiWildcardType)acceptedBound).isExtends() != wildcardType.isExtends()) return PsiWildcardType.createUnbounded(manager); return acceptedBound; } + if (wildcardType.isExtends() && acceptedBound.equalsToText(CommonClassNames.JAVA_LANG_OBJECT)) return PsiWildcardType.createUnbounded(manager); if (acceptedBound.equals(bound)) return wildcardType; return wildcardType.isExtends() ? PsiWildcardType.createExtends(manager, acceptedBound) diff --git a/java/java-tests/testData/codeInsight/overrideImplement/afterSimplifyObjectWildcard.java b/java/java-tests/testData/codeInsight/overrideImplement/afterSimplifyObjectWildcard.java new file mode 100644 index 000000000000..0f09d8f63b3a --- /dev/null +++ b/java/java-tests/testData/codeInsight/overrideImplement/afterSimplifyObjectWildcard.java @@ -0,0 +1,12 @@ +interface Generic { + SomeGeneric foo(); +} + +class II implements Generic { + public SomeGeneric foo() { + return null; //To change body of implemented methods use File | Settings | File Templates. + } +} + +class SomeGeneric

{ +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/overrideImplement/beforeSimplifyObjectWildcard.java b/java/java-tests/testData/codeInsight/overrideImplement/beforeSimplifyObjectWildcard.java new file mode 100644 index 000000000000..3296e1e9d0b0 --- /dev/null +++ b/java/java-tests/testData/codeInsight/overrideImplement/beforeSimplifyObjectWildcard.java @@ -0,0 +1,10 @@ +interface Generic { + SomeGeneric foo(); +} + +class II implements Generic { + +} + +class SomeGeneric

{ +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceParameter/afterSimplifiedResultedType.java b/java/java-tests/testData/refactoring/introduceParameter/afterSimplifiedResultedType.java new file mode 100644 index 000000000000..d56819d4199b --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceParameter/afterSimplifiedResultedType.java @@ -0,0 +1,24 @@ +import java.util.*; +public class IntroduceParameterProducesWarning { + private final List> elements; + + public IntroduceParameterProducesWarning(final ArrayList> anObject) { + elements = anObject; + } + + public static ArrayList newArrayList(E... elements) { + ArrayList list = new ArrayList(); + Collections.addAll(list, elements); + return list; + } + + private static interface Generic{ + + } + + private static class SomeGeneric implements Generic { + } + + private static class SomeOtherGeneric implements Generic { + } +} diff --git a/java/java-tests/testData/refactoring/introduceParameter/beforeSimplifiedResultedType.java b/java/java-tests/testData/refactoring/introduceParameter/beforeSimplifiedResultedType.java new file mode 100644 index 000000000000..1a7e82330b67 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceParameter/beforeSimplifiedResultedType.java @@ -0,0 +1,24 @@ +import java.util.*; +public class IntroduceParameterProducesWarning { + private final List> elements; + + public IntroduceParameterProducesWarning() { + elements = newArrayList(new SomeGeneric(), new SomeOtherGeneric()); + } + + public static ArrayList newArrayList(E... elements) { + ArrayList list = new ArrayList(); + Collections.addAll(list, elements); + return list; + } + + private static interface Generic{ + + } + + private static class SomeGeneric implements Generic { + } + + private static class SomeOtherGeneric implements Generic { + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java index 1ec9bf5ea5d4..6de5002321a7 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/OverrideImplementTest.java @@ -60,6 +60,7 @@ public class OverrideImplementTest extends LightCodeInsightTestCase { public void testSubstituteBoundInMethodTypeParam() { doTest(false); } public void testClone() { doTest(false); } public void testOnTheLineWithExistingExpression() { doTest(false); } + public void testSimplifyObjectWildcard() { doTest(false); } public void testImplementExtensionMethods() { doTest8(false, true); } public void testDoNotImplementExtensionMethods() { doTest8(false, true); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterTest.java index 2c04fb42a9f1..9af0a0089503 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterTest.java @@ -313,6 +313,10 @@ public class IntroduceParameterTest extends LightRefactoringTestCase { doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_ALL, true, false, true, false); } + public void testSimplifiedResultedType() throws Exception { + doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_ALL, true, false, true, false); + } + private void doTestThroughHandler() throws Exception { configureByFile("/refactoring/introduceParameter/before" + getTestName(false) + ".java"); boolean enabled = true;