Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments')
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/in/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/out/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/in/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/out/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/in/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/in/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/out/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/in/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/out/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/in/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/out/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/in/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/out/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/in/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/in/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/out/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/in/A.java54
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/out/A.java54
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/in/A.java20
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/out/A.java20
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/in/A.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/out/A.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/in/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/out/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/in/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/out/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/in/A.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/out/A.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/in/A.java15
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/out/A.java15
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/in/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/in/A.java27
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/out/A.java27
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/in/A.java26
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/out/A.java26
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/in/A.java26
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/out/A.java26
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/in/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/in/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/out/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/in/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/in/A.java21
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/out/A.java21
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/in/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/in/A.java24
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/out/A.java24
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/in/A.java31
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/out/A.java31
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/in/A.java23
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/out/A.java23
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/in/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/out/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/in/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/out/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/in/A.java7
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/out/A.java7
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/in/A.java27
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/out/A.java27
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/in/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/out/A.java18
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/in/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/out/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/in/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/out/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/in/A.java14
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/out/A.java15
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/in/A.java9
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/out/A.java9
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/in/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/out/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/in/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/in/A.java20
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/out/A.java20
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/in/A.java30
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/out/A.java30
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/in/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/out/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/A.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/Cell.java7
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/out/A.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/in/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/out/A.java17
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/in/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/out/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/in/A.java4
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/out/A.java4
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/in/A.java8
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/out/A.java8
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/in/A.java26
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/out/A.java26
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/in/A.java22
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/out/A.java22
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/in/A.java31
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/out/A.java31
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/in/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/out/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/in/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/out/A.java11
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/in/A.java23
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/out/A.java23
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/in/A.java30
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/out/A.java30
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/in/A.java14
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/out/A.java14
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/in/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/out/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/in/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/out/A.java13
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/in/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/out/A.java16
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/InvertedPair.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/Pair.java22
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/A.java12
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/InvertedPair.java10
-rw-r--r--testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/Pair.java22
123 files changed, 2137 insertions, 0 deletions
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/in/A.java
new file mode 100644
index 000000000..aa4878a4c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.Enumeration;
+
+public class A {
+ private void createTestList(TestCollector collector) {
+ Enumeration each= collector.collectTests();
+ while (each.hasMoreElements()) {
+ String s= (String) each.nextElement();
+ }
+ }
+}
+
+interface TestCollector {
+ public Enumeration collectTests();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/out/A.java
new file mode 100644
index 000000000..0bb18646a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCUInferFromCast/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.Enumeration;
+
+public class A {
+ private void createTestList(TestCollector collector) {
+ Enumeration<String> each= collector.collectTests();
+ while (each.hasMoreElements()) {
+ String s= each.nextElement();
+ }
+ }
+}
+
+interface TestCollector {
+ public Enumeration<String> collectTests();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/in/A.java
new file mode 100644
index 000000000..5523fb36a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+ void m() {
+ Vector vector = new Vector();
+ vector.add("Hello");
+ Vector v2= new Vector();
+ v2.add((CharSequence) null);
+ v2.addAll(vector);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/out/A.java
new file mode 100644
index 000000000..8928d8e02
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddAll/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+ void m() {
+ Vector<String> vector = new Vector<String>();
+ vector.add("Hello");
+ Vector<CharSequence> v2= new Vector<CharSequence>();
+ v2.add((CharSequence) null);
+ v2.addAll(vector);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/in/A.java
new file mode 100644
index 000000000..6e9524a0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add("Eclipse"); l.add("is"); l.add(new String("cool"));
+ for (Iterator iter= l.iterator(); iter.hasNext();) {
+ String word= (String) iter.next();
+ System.out.print(word);
+ System.out.print(" ");
+ }
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/out/A.java
new file mode 100644
index 000000000..af1f2ceac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetIterator/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<String> l= new ArrayList<String>();
+ l.add("Eclipse"); l.add("is"); l.add(new String("cool"));
+ for (Iterator<String> iter= l.iterator(); iter.hasNext();) {
+ String word= iter.next();
+ System.out.print(word);
+ System.out.print(" ");
+ }
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/in/A.java
new file mode 100644
index 000000000..397cf4922
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add("Eclipse");
+ String eclipse= (String) l.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/out/A.java
new file mode 100644
index 000000000..fb52de4b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddGetString/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<String> l= new ArrayList<String>();
+ l.add("Eclipse");
+ String eclipse= l.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/in/A.java
new file mode 100644
index 000000000..6d6127ccb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add(new Integer(1));
+ Number n= (Number) l.get(0);
+ Object o1= (Number) l.get(0);
+ Object o2= l.get(0);
+
+ List l2= new ArrayList();
+ l2.add(n);
+ Integer i= (Integer) l2.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/out/A.java
new file mode 100644
index 000000000..3bea6226c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddIntegerGetNumber/out/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<Integer> l= new ArrayList<Integer>();
+ l.add(new Integer(1));
+ Number n= l.get(0);
+ Object o1= l.get(0);
+ Object o2= l.get(0);
+
+ List<Number> l2= new ArrayList<Number>();
+ l2.add(n);
+ Integer i= (Integer) l2.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/in/A.java
new file mode 100644
index 000000000..cf08e44a8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add(new String());
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/out/A.java
new file mode 100644
index 000000000..909aff469
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<String> l= new ArrayList<String>();
+ l.add(new String());
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/in/A.java
new file mode 100644
index 000000000..7f0337f6e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.AbstractList;
+
+class A {
+ void foo() {
+ AbstractList l= new ArrayList();
+ l.add(new String());
+ l.add("");
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/out/A.java
new file mode 100644
index 000000000..d6d3f2fb3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddString2/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.AbstractList;
+
+class A {
+ void foo() {
+ AbstractList<String> l= new ArrayList<String>();
+ l.add(new String());
+ l.add("");
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/in/A.java
new file mode 100644
index 000000000..adc96646e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add("Eclipse");
+ l.add(new Integer(10));
+ bar(l);
+ }
+ void bar(Object o) {
+ ((List)o).add(new A());
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/out/A.java
new file mode 100644
index 000000000..e4e64fb25
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringInteger/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+ void foo() {
+ List<Serializable> l= new ArrayList<Serializable>();
+ l.add("Eclipse");
+ l.add(new Integer(10));
+ bar(l);
+ }
+ void bar(Object o) {
+ ((List)o).add(new A());
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/in/A.java
new file mode 100644
index 000000000..563cd6dd7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add("Eclipse");
+ l.add(new Integer(10));
+ bar(l);
+ }
+ void bar(List l) {
+ l.add(new A());
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/out/A.java
new file mode 100644
index 000000000..1ba5e99b4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAddStringIntegerA/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+ void foo() {
+ List<Object> l= new ArrayList<Object>();
+ l.add("Eclipse");
+ l.add(new Integer(10));
+ bar(l);
+ }
+ void bar(List<Object> l) {
+ l.add(new A());
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/in/A.java
new file mode 100644
index 000000000..a0c2bfbc3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/in/A.java
@@ -0,0 +1,54 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+class Qualified {
+ String qualifier;
+ String name;
+}
+
+class Comparisons {
+ ArrayList fList= new ArrayList();
+
+ void add(Qualified q) {
+ fList.add(q);
+ }
+
+ void sort() {
+ Collections.sort(fList, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Qualified q1= (Qualified) o1;
+ Qualified q2= (Qualified) o2;
+ int qualifierComp = q1.qualifier.compareTo(q2.qualifier);
+ if (qualifierComp != 0)
+ return qualifierComp;
+ else
+ return q1.name.compareTo(q2.name);
+ }
+ });
+ }
+}
+
+class Comparisons2 {
+ ArrayList fList= new ArrayList();
+
+ void add(Qualified q) {
+ fList.add(q);
+ }
+
+ void sort() {
+ Collections.sort(fList, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Qualified q1= (Qualified) o1;
+ Qualified q2= (Qualified) o2;
+ int qualifierComp = q1.qualifier.compareTo(q2.qualifier);
+ if (qualifierComp != 0)
+ return qualifierComp;
+ else
+ return q1.name.compareTo(q2.name);
+ }
+ });
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/out/A.java
new file mode 100644
index 000000000..17b237a86
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuAnonymous01/out/A.java
@@ -0,0 +1,54 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+class Qualified {
+ String qualifier;
+ String name;
+}
+
+class Comparisons {
+ ArrayList<Qualified> fList= new ArrayList<Qualified>();
+
+ void add(Qualified q) {
+ fList.add(q);
+ }
+
+ void sort() {
+ Collections.sort(fList, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Qualified q1= (Qualified) o1;
+ Qualified q2= (Qualified) o2;
+ int qualifierComp = q1.qualifier.compareTo(q2.qualifier);
+ if (qualifierComp != 0)
+ return qualifierComp;
+ else
+ return q1.name.compareTo(q2.name);
+ }
+ });
+ }
+}
+
+class Comparisons2 {
+ ArrayList<Qualified> fList= new ArrayList<Qualified>();
+
+ void add(Qualified q) {
+ fList.add(q);
+ }
+
+ void sort() {
+ Collections.sort(fList, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Qualified q1= (Qualified) o1;
+ Qualified q2= (Qualified) o2;
+ int qualifierComp = q1.qualifier.compareTo(q2.qualifier);
+ if (qualifierComp != 0)
+ return qualifierComp;
+ else
+ return q1.name.compareTo(q2.name);
+ }
+ });
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/in/A.java
new file mode 100644
index 000000000..f71a39763
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/in/A.java
@@ -0,0 +1,20 @@
+package p;
+
+import java.util.Arrays;
+import java.util.List;
+
+class A {
+ List l= null;
+
+ void add(String s) {
+ l.add(s);
+ }
+
+ void addAll(String[] ss) {
+ l.addAll(Arrays.asList(ss));
+ }
+
+ String[] get() {
+ return (String[])l.toArray(new String[l.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/out/A.java
new file mode 100644
index 000000000..463571df7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays01/out/A.java
@@ -0,0 +1,20 @@
+package p;
+
+import java.util.Arrays;
+import java.util.List;
+
+class A {
+ List<String> l= null;
+
+ void add(String s) {
+ l.add(s);
+ }
+
+ void addAll(String[] ss) {
+ l.addAll(Arrays.asList(ss));
+ }
+
+ String[] get() {
+ return l.toArray(new String[l.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/in/A.java
new file mode 100644
index 000000000..7360c6d05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.Arrays;
+import java.util.List;
+
+class A {
+ void addAll(String[] ss) {
+ List l= Arrays.asList(ss);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/out/A.java
new file mode 100644
index 000000000..5ac53d490
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays02/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.Arrays;
+import java.util.List;
+
+class A {
+ void addAll(String[] ss) {
+ List<String> l= Arrays.asList(ss);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/in/A.java
new file mode 100644
index 000000000..83caed800
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void addAll(String[] ss) {
+ List l= A.asList(ss);
+ }
+
+ public static <T> List<T> asList(T[] a) {
+ ArrayList<T> res= new ArrayList<T>();
+ for (int i= 0; i < a.length; i++) {
+ res.add(a[i]);
+ }
+ return res;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/out/A.java
new file mode 100644
index 000000000..00cf50d83
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays03/out/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void addAll(String[] ss) {
+ List<String> l= A.asList(ss);
+ }
+
+ public static <T> List<T> asList(T[] a) {
+ ArrayList<T> res= new ArrayList<T>();
+ for (int i= 0; i < a.length; i++) {
+ res.add(a[i]);
+ }
+ return res;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/in/A.java
new file mode 100644
index 000000000..6f68dedef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void addAll(String[] ss) {
+ List l= A.asList(ss);
+ }
+
+ public static <T> List<T> asList(T... a) {
+ ArrayList<T> res= new ArrayList<T>();
+ for (int i= 0; i < a.length; i++) {
+ res.add(a[i]);
+ }
+ return res;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/out/A.java
new file mode 100644
index 000000000..5391e0b16
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays04/out/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void addAll(String[] ss) {
+ List<String> l= A.asList(ss);
+ }
+
+ public static <T> List<T> asList(T... a) {
+ ArrayList<T> res= new ArrayList<T>();
+ for (int i= 0; i < a.length; i++) {
+ res.add(a[i]);
+ }
+ return res;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/in/A.java
new file mode 100644
index 000000000..b8272aebc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.List;
+
+class A {
+ List l= null;
+ String[] get() {
+ return (String[]) l.toArray(new String[l.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/out/A.java
new file mode 100644
index 000000000..21b59bbd4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays05/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.List;
+
+class A {
+ List<String> l= null;
+ String[] get() {
+ return l.toArray(new String[l.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/in/A.java
new file mode 100644
index 000000000..c08f7e771
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import java.util.List;
+
+class A {
+ List l= null;
+
+ void add(String s) {
+ l.add(s);
+ }
+
+ String[] get() {
+ return (String[]) l.toArray(new String[l.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/out/A.java
new file mode 100644
index 000000000..151385827
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays06/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import java.util.List;
+
+class A {
+ List<String> l= null;
+
+ void add(String s) {
+ l.add(s);
+ }
+
+ String[] get() {
+ return l.toArray(new String[l.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/in/A.java
new file mode 100644
index 000000000..9ccce45a2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+
+@SuppressWarnings("unused")
+class A {
+
+ private Number[] fNumbers;
+ private Integer[] ints;
+
+ public void process() {
+ ArrayList list= new ArrayList();
+ list.add(17);
+ fNumbers= (Number[]) list.toArray(new Integer[list.size()]);
+ ints= (Integer[]) list.toArray(new Integer[list.size()]);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/out/A.java
new file mode 100644
index 000000000..f813e5b97
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuArrays07/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+
+@SuppressWarnings("unused")
+class A {
+
+ private Number[] fNumbers;
+ private Integer[] ints;
+
+ public void process() {
+ ArrayList<Integer> list= new ArrayList<Integer>();
+ list.add(17);
+ fNumbers= list.toArray(new Integer[list.size()]);
+ ints= list.toArray(new Integer[list.size()]);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/in/A.java
new file mode 100644
index 000000000..55e90e670
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/in/A.java
@@ -0,0 +1,27 @@
+package p;
+
+class Cell<T> {
+ T t;
+ public void setT(T t) {
+ this.t= t;
+ }
+ public T getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ Cell c1= new Cell();
+ c1.setT(17);
+
+ Cell c2= new Cell();
+ c2.setT(new Short((short) 8));
+ short s= (Short) c2.getT();
+
+ Cell c3= new Cell();
+ byte bite= 1;
+ c3.setT(bite);
+ bite= (Byte) c3.getT();
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/out/A.java
new file mode 100644
index 000000000..96c48e5d3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing01/out/A.java
@@ -0,0 +1,27 @@
+package p;
+
+class Cell<T> {
+ T t;
+ public void setT(T t) {
+ this.t= t;
+ }
+ public T getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ Cell<Integer> c1= new Cell<Integer>();
+ c1.setT(17);
+
+ Cell<Short> c2= new Cell<Short>();
+ c2.setT(new Short((short) 8));
+ short s= c2.getT();
+
+ Cell<Byte> c3= new Cell<Byte>();
+ byte bite= 1;
+ c3.setT(bite);
+ bite= c3.getT();
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/in/A.java
new file mode 100644
index 000000000..db07ddac8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/in/A.java
@@ -0,0 +1,26 @@
+package p;
+
+class Cell<T> {
+ T t;
+ public void setT(T t) {
+ this.t= t;
+ }
+ public T getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ Cell c1= new Cell();
+ c1.setT(17);
+ c1.setT(17.3f);
+ Number n= (Number) c1.getT();
+
+ Cell c2= null;
+ c2.setT(18);
+ Cell c3= new Cell();
+ c3.setT(new Long(23));
+ c2= c3;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/out/A.java
new file mode 100644
index 000000000..d2f8f31cf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuBoxing02/out/A.java
@@ -0,0 +1,26 @@
+package p;
+
+class Cell<T> {
+ T t;
+ public void setT(T t) {
+ this.t= t;
+ }
+ public T getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ Cell<Number> c1= new Cell<Number>();
+ c1.setT(17);
+ c1.setT(17.3f);
+ Number n= c1.getT();
+
+ Cell<Number> c2= null;
+ c2.setT(18);
+ Cell<Number> c3= new Cell<Number>();
+ c3.setT(new Long(23));
+ c2= c3;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/in/A.java
new file mode 100644
index 000000000..72514191e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/in/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+interface J {
+ public List getList(); // cannot infer a return type (except List<?>)
+}
+
+class D implements J {
+ public List getList() {
+ List dList= new ArrayList();
+ dList.add(new Double(1.2d));
+ Double d= (Double) dList.get(0);
+ return dList;
+ }
+}
+
+class S implements J {
+ public List getList() {
+ List sList= new ArrayList();
+ sList.add("String");
+ String s= (String) sList.get(0);
+ return sList;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/out/A.java
new file mode 100644
index 000000000..00d525c5b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCannotStringDouble/out/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+interface J {
+ public List getList(); // cannot infer a return type (except List<?>)
+}
+
+class D implements J {
+ public List getList() {
+ List<Double> dList= new ArrayList<Double>();
+ dList.add(new Double(1.2d));
+ Double d= dList.get(0);
+ return dList;
+ }
+}
+
+class S implements J {
+ public List getList() {
+ List<String> sList= new ArrayList<String>();
+ sList.add("String");
+ String s= sList.get(0);
+ return sList;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/in/A.java
new file mode 100644
index 000000000..a9dc42ffa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+class A {
+ public void foo() {
+ String min= (String) Collections.min(getNames());
+ }
+ public List getNames() {
+ ArrayList result= new ArrayList();
+ result.add("Zwyssig");
+ result.add("Abaecherli");
+ return result;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/out/A.java
new file mode 100644
index 000000000..2279e48f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCollectionsMin/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+class A {
+ public void foo() {
+ String min= Collections.min(getNames());
+ }
+ public List<String> getNames() {
+ ArrayList<String> result= new ArrayList<String>();
+ result.add("Zwyssig");
+ result.add("Abaecherli");
+ return result;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/in/A.java
new file mode 100644
index 000000000..2c105a9c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List list= new ArrayList();
+ list.add(new Double(1.7));
+ list.add(new Integer(1));
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/out/A.java
new file mode 100644
index 000000000..6d41b825d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuCommonSuper/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<Number> list= new ArrayList<Number>();
+ list.add(new Double(1.7));
+ list.add(new Integer(1));
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/in/A.java
new file mode 100644
index 000000000..182ede5dc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+class Tuple<T1, T2> {
+ private T1 t1;
+ private T2 t2;
+
+ public Tuple(T1 o1, T2 o2) {
+ t1= o1;
+ t2= o2;
+ }
+}
+
+class Main {
+ public static void main(String[] args) {
+ Tuple t= new Tuple(new String(), new Integer(10));
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/out/A.java
new file mode 100644
index 000000000..6a361d035
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuConstructor01/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+class Tuple<T1, T2> {
+ private T1 t1;
+ private T2 t2;
+
+ public Tuple(T1 o1, T2 o2) {
+ t1= o1;
+ t2= o2;
+ }
+}
+
+class Main {
+ public static void main(String[] args) {
+ Tuple<String, Integer> t= new Tuple<String, Integer>(new String(), new Integer(10));
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/in/A.java
new file mode 100644
index 000000000..ca0300c2c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/in/A.java
@@ -0,0 +1,21 @@
+package p;
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add("Eclipse");
+ boolean has= l.contains("is");
+ }
+ void fooObj() {
+ List lObj= new ArrayList();
+ lObj.add("Eclipse");
+ boolean has= lObj.contains(new Object());
+ }
+ void fooInteger() {
+ List lInteger= new ArrayList();
+ lInteger.add("Eclipse");
+ boolean has= lInteger.contains(new Integer(1));
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/out/A.java
new file mode 100644
index 000000000..0def0f656
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuContains/out/A.java
@@ -0,0 +1,21 @@
+package p;
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<String> l= new ArrayList<String>();
+ l.add("Eclipse");
+ boolean has= l.contains("is");
+ }
+ void fooObj() {
+ List<String> lObj= new ArrayList<String>();
+ lObj.add("Eclipse");
+ boolean has= lObj.contains(new Object());
+ }
+ void fooInteger() {
+ List<String> lInteger= new ArrayList<String>();
+ lInteger.add("Eclipse");
+ boolean has= lInteger.contains(new Integer(1));
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/in/A.java
new file mode 100644
index 000000000..6d2e79d9f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+
+ void foo() {
+ List l= new ArrayList();
+ bar(l);
+ l.add(new Object());
+ }
+
+ void bar(List<String> l) {
+
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/out/A.java
new file mode 100644
index 000000000..6d2e79d9f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuExistingParameterized01/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+
+ void foo() {
+ List l= new ArrayList();
+ bar(l);
+ l.add(new Object());
+ }
+
+ void bar(List<String> l) {
+
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/in/A.java
new file mode 100644
index 000000000..255d7b9ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/in/A.java
@@ -0,0 +1,24 @@
+package p;
+
+class Cell<T> {
+ T t;
+ public void setT(T t) {
+ this.t= t;
+ }
+ public T getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ Cell c1= new Cell();
+ c1.setT(17);
+ Number n= (Number) c1.t;
+
+ Cell c2= new Cell();
+ c2.t= Boolean.TRUE;
+ boolean b= (Boolean) c2.t;
+ boolean b2= (Boolean) c2.getT();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/out/A.java
new file mode 100644
index 000000000..27226d016
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess01/out/A.java
@@ -0,0 +1,24 @@
+package p;
+
+class Cell<T> {
+ T t;
+ public void setT(T t) {
+ this.t= t;
+ }
+ public T getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ Cell<Integer> c1= new Cell<Integer>();
+ c1.setT(17);
+ Number n= c1.t;
+
+ Cell<Boolean> c2= new Cell<Boolean>();
+ c2.t= Boolean.TRUE;
+ boolean b= c2.t;
+ boolean b2= c2.getT();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/in/A.java
new file mode 100644
index 000000000..b71f5c119
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/in/A.java
@@ -0,0 +1,31 @@
+package p;
+
+import java.util.*;
+
+class Cell<T> {
+ List<T> t;
+ public void setT(AbstractList<T> t) {
+ this.t= t;
+ }
+ public Collection<T> getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ ArrayList booleanList= new ArrayList();
+ booleanList.add(Boolean.FALSE);
+
+ Cell c1= new Cell();
+ c1.t= booleanList;
+ c1.setT(booleanList);
+ Iterable t= c1.t;
+ Iterator iter= (Iterator) c1.t.iterator();
+ Iterator iter2= c1.t.iterator();
+ boolean bool= (Boolean) c1.t.iterator().next();
+
+ Cell c2= new Cell();
+ c2.t= booleanList;
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/out/A.java
new file mode 100644
index 000000000..596e3ff45
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuFieldAccess02/out/A.java
@@ -0,0 +1,31 @@
+package p;
+
+import java.util.*;
+
+class Cell<T> {
+ List<T> t;
+ public void setT(AbstractList<T> t) {
+ this.t= t;
+ }
+ public Collection<T> getT() {
+ return t;
+ }
+}
+
+class CellTest {
+ public static void main(String[] args) {
+ ArrayList<Boolean> booleanList= new ArrayList<Boolean>();
+ booleanList.add(Boolean.FALSE);
+
+ Cell<Boolean> c1= new Cell<Boolean>();
+ c1.t= booleanList;
+ c1.setT(booleanList);
+ Iterable<Boolean> t= c1.t;
+ Iterator<Boolean> iter= (Iterator<Boolean>) c1.t.iterator();
+ Iterator<Boolean> iter2= c1.t.iterator();
+ boolean bool= c1.t.iterator().next();
+
+ Cell<Boolean> c2= new Cell<Boolean>();
+ c2.t= booleanList;
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/in/A.java
new file mode 100644
index 000000000..b7c967a73
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/in/A.java
@@ -0,0 +1,23 @@
+package p;
+
+class A {
+ void calc(Class superClass) {
+ superClass= superClass.getSuperclass();
+ }
+ void call(Process pro) {
+ calc(pro.getClass());
+ }
+}
+
+class Exposer {
+ private void foo() {
+ new Generic(getClass());
+ new Generic(Exposer.class);
+ }
+}
+
+class Generic<T> {
+ Generic(Class<T> clazz) {
+
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/out/A.java
new file mode 100644
index 000000000..1f63adf22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass/out/A.java
@@ -0,0 +1,23 @@
+package p;
+
+class A {
+ void calc(Class superClass) {
+ superClass= superClass.getSuperclass();
+ }
+ void call(Process pro) {
+ calc(pro.getClass());
+ }
+}
+
+class Exposer {
+ private void foo() {
+ new Generic(getClass());
+ new Generic<Exposer>(Exposer.class);
+ }
+}
+
+class Generic<T> {
+ Generic(Class<T> clazz) {
+
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/in/A.java
new file mode 100644
index 000000000..feb4b2d45
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+ void m(Object someObject) {
+ someObject.getClass();
+ }
+ void m1(Object someObject) {
+ Class c= someObject.getClass();
+ }
+ void i(Integer someInt) {
+ someInt.getClass();
+ }
+ void i1(Integer someInt) {
+ Class c= someInt.getClass();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/out/A.java
new file mode 100644
index 000000000..4c5ecfb08
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClass2/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+ void m(Object someObject) {
+ someObject.getClass();
+ }
+ void m1(Object someObject) {
+ Class<? extends Object> c= someObject.getClass();
+ }
+ void i(Integer someInt) {
+ someInt.getClass();
+ }
+ void i1(Integer someInt) {
+ Class<? extends Integer> c= someInt.getClass();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/in/A.java
new file mode 100644
index 000000000..49f08f4cd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+ void doNothing() throws Exception {
+ getClass().newInstance();
+ this.getClass().newInstance();
+ A newInstance= (A) getClass().newInstance();
+ A test= (A) this.getClass().newInstance();
+
+ RuntimeException rte= (RuntimeException) new ClassCastException().getClass().newInstance();
+ ClassCastException cce= (ClassCastException) rte.getClass().newInstance();
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/out/A.java
new file mode 100644
index 000000000..f5838241d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetClassNewInstance/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+ void doNothing() throws Exception {
+ getClass().newInstance();
+ this.getClass().newInstance();
+ A newInstance= getClass().newInstance();
+ A test= this.getClass().newInstance();
+
+ RuntimeException rte= new ClassCastException().getClass().newInstance();
+ ClassCastException cce= (ClassCastException) rte.getClass().newInstance();
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/in/A.java
new file mode 100644
index 000000000..6115203c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/in/A.java
@@ -0,0 +1,7 @@
+package p;
+
+class TestSuite {
+ public TestSuite(Class theClass) {
+ theClass = theClass.getSuperclass();
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/out/A.java
new file mode 100644
index 000000000..6115203c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetSuperclass/out/A.java
@@ -0,0 +1,7 @@
+package p;
+
+class TestSuite {
+ public TestSuite(Class theClass) {
+ theClass = theClass.getSuperclass();
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/in/A.java
new file mode 100644
index 000000000..8d94872d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/in/A.java
@@ -0,0 +1,27 @@
+package p;
+
+public class A {
+ static void takeP(Class c) {}
+ static void takePQ(Class c) {}
+
+ class P {
+ {
+ Class p= getClass();
+ takeP(p);
+ takePQ(p);
+ }
+ }
+
+ class Q {
+ {
+ Class q= getClass();
+ takePQ(q);
+ }
+ }
+
+ class Z {
+ {
+ Class z= getClass();
+ }
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/out/A.java
new file mode 100644
index 000000000..4e4a78147
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuGetTakeClassStayRaw/out/A.java
@@ -0,0 +1,27 @@
+package p;
+
+public class A {
+ static void takeP(Class c) {}
+ static void takePQ(Class c) {}
+
+ class P {
+ {
+ Class p= getClass();
+ takeP(p);
+ takePQ(p);
+ }
+ }
+
+ class Q {
+ {
+ Class q= getClass();
+ takePQ(q);
+ }
+ }
+
+ class Z {
+ {
+ Class<? extends Z> z= getClass();
+ }
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/in/A.java
new file mode 100644
index 000000000..a2a8535f4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+
+class A<T, U> {
+ // cannot infer type for U -> leave raw
+ T t;
+ U u;
+
+ void addT(T arg) {
+ t= arg;
+ }
+
+ static void m() {
+ A p = new A();
+ p.addT("Hello");
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/out/A.java
new file mode 100644
index 000000000..a2a8535f4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuHalfPair/out/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+
+class A<T, U> {
+ // cannot infer type for U -> leave raw
+ T t;
+ U u;
+
+ void addT(T arg) {
+ t= arg;
+ }
+
+ static void m() {
+ A p = new A();
+ p.addT("Hello");
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/in/A.java
new file mode 100644
index 000000000..8ed5e4302
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.Vector;
+
+class Cell {
+ public <T> T f1(T l) {
+ Vector v= new Vector();
+ v.add(l);
+ return (T) v.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/out/A.java
new file mode 100644
index 000000000..6c7a3b194
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuInferTypeVariable01/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.Vector;
+
+class Cell {
+ public <T> T f1(T l) {
+ Vector<T> v= new Vector<T>();
+ v.add(l);
+ return v.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/in/A.java
new file mode 100644
index 000000000..bbe04637f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ AbstractList l= new ArrayList();
+ List list= l;
+ list.add("Eclipse");
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/out/A.java
new file mode 100644
index 000000000..b01ac1e6f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuIntermediateLocal/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ AbstractList<String> l= new ArrayList<String>();
+ List<String> list= l;
+ list.add("Eclipse");
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/in/A.java
new file mode 100644
index 000000000..0d156927b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+class A {
+ void sets() {
+ Map map= new HashMap();
+ map.put("key", new Integer(17));
+ Iterator iter= map.entrySet().iterator();
+ Map.Entry entry= (Map.Entry) iter.next();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/out/A.java
new file mode 100644
index 000000000..48783afad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMapEntry01/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+class A {
+ void sets() {
+ Map<String, Integer> map= new HashMap<String, Integer>();
+ map.put("key", new Integer(17));
+ Iterator<Entry<String, Integer>> iter= map.entrySet().iterator();
+ Entry<String, Integer> entry= iter.next();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/in/A.java
new file mode 100644
index 000000000..0c59758f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class NodeList<E> {
+ class Cursor { }
+ {
+ NodeList.Cursor cursor;
+ NodeList<String>.Cursor c2;
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/out/A.java
new file mode 100644
index 000000000..0c59758f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMemberOfRaw/out/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class NodeList<E> {
+ class Cursor { }
+ {
+ NodeList.Cursor cursor;
+ NodeList<String>.Cursor c2;
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/in/A.java
new file mode 100644
index 000000000..ad1d56b97
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+ void call(My my) {
+ my.method("Eclipse1", new Integer(1));
+ }
+}
+
+class My<C> {
+ <M> void method(C c, M m) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/out/A.java
new file mode 100644
index 000000000..61659d22b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric01/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+ void call(My<String> my) {
+ my.method("Eclipse1", new Integer(1));
+ }
+}
+
+class My<C> {
+ <M> void method(C c, M m) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/in/A.java
new file mode 100644
index 000000000..f9beb3993
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+class A {
+ void call(Ex ex) {
+ ex.method("Eclipse1", new Integer(1));
+ Top top= ex;
+ top.method("Eclipse2", new Integer(2));
+ }
+}
+
+class Top<TC> {
+ <TM> void method(TC cTop, TM mTop) {}
+}
+
+class Ex<C extends String> extends Top<C> {
+ <M extends Integer> void method(C cEx, M mEx) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/out/A.java
new file mode 100644
index 000000000..4aa66536c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodAndTypeGeneric02/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+class A {
+ void call(Ex<String> ex) {
+ ex.method("Eclipse1", new Integer(1));
+ Top<String> top= ex;
+ top.method("Eclipse2", new Integer(2));
+ }
+}
+
+class Top<TC> {
+ <TM> void method(TC cTop, TM mTop) {}
+}
+
+class Ex<C extends String> extends Top<C> {
+ <M extends Integer> void method(C cEx, M mEx) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/in/A.java
new file mode 100644
index 000000000..e0d153e18
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/in/A.java
@@ -0,0 +1,20 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+class A {
+ void foo() {
+ List l= new ArrayList();
+ l.add("Eclipse");
+ bar(l);
+ }
+
+ void bar(List arg) {
+ for (Iterator iter= arg.iterator(); iter.hasNext();) {
+ String element= (String) iter.next();
+ System.out.println(element);
+ }
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/out/A.java
new file mode 100644
index 000000000..de0bbae80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodParam/out/A.java
@@ -0,0 +1,20 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<String> l= new ArrayList<String>();
+ l.add("Eclipse");
+ bar(l);
+ }
+
+ void bar(List<String> arg) {
+ for (Iterator<String> iter= arg.iterator(); iter.hasNext();) {
+ String element= iter.next();
+ System.out.println(element);
+ }
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/in/A.java
new file mode 100644
index 000000000..b9335b0e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/in/A.java
@@ -0,0 +1,30 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+class A {
+ public void foo() {
+ for (Iterator iter= getList().iterator(); iter.hasNext();) {
+ String element= (String) iter.next();
+ System.out.println(element);
+ }
+ }
+
+ public List getList() {
+ ArrayList result= new ArrayList();
+ result.add("Tom");
+ result.add("Jerry");
+ return result;
+ }
+
+ public Iterator getIterator(List list) {
+ list= getList();
+ return list.iterator();
+ }
+
+ public Iterator getIterator2(List list2) {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/out/A.java
new file mode 100644
index 000000000..f26cff116
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodReturns/out/A.java
@@ -0,0 +1,30 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+class A {
+ public void foo() {
+ for (Iterator<String> iter= getList().iterator(); iter.hasNext();) {
+ String element= iter.next();
+ System.out.println(element);
+ }
+ }
+
+ public List<String> getList() {
+ ArrayList<String> result= new ArrayList<String>();
+ result.add("Tom");
+ result.add("Jerry");
+ return result;
+ }
+
+ public Iterator<String> getIterator(List<String> list) {
+ list= getList();
+ return list.iterator();
+ }
+
+ public Iterator getIterator2(List list2) {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/in/A.java
new file mode 100644
index 000000000..64cebc652
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.Vector;
+
+public class A {
+ public <T> T f1(T l) {
+ Vector v = new Vector();
+ v.add(l);
+ return (T) v.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/out/A.java
new file mode 100644
index 000000000..7d4d55cae
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuMethodTypeParam/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.Vector;
+
+public class A {
+ public <T> T f1(T l) {
+ Vector<T> v = new Vector<T>();
+ v.add(l);
+ return v.get(0);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/A.java
new file mode 100644
index 000000000..7b72a408c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+ void m() {
+ Cell c= new Cell();
+ c.put("X");
+ Cell nested= new Cell();
+ nested.put(c);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/Cell.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/Cell.java
new file mode 100644
index 000000000..f448a9363
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/in/Cell.java
@@ -0,0 +1,7 @@
+package p;
+
+public class Cell<T> {
+ public void put(T t) {
+
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/out/A.java
new file mode 100644
index 000000000..eac1c62a5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedCells1/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+ void m() {
+ Cell<String> c= new Cell<String>();
+ c.put("X");
+ Cell<Cell<String>> nested= new Cell<Cell<String>>();
+ nested.put(c);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/in/A.java
new file mode 100644
index 000000000..23bbf6d56
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+
+ void k() {
+ Vector v1= new Vector();
+ Vector v2= new Vector();
+ Vector v3= new Vector();
+
+ v3.add(new String("fff")); // String <= E[v3] --> String is
+ // not parametric --> nothing to unify
+ v2.add(v3); // v3 <= E[v2] --> 2. unify (E[v3], E[E[v2]])
+ v1.add(v2.get(0)); // E[v2] <= E[v1] --> 1. unify (E[E[v2]], E[E[v1]])
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/out/A.java
new file mode 100644
index 000000000..29aa2aedb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors0/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+
+ void k() {
+ Vector<Vector<String>> v1= new Vector<Vector<String>>();
+ Vector<Vector<String>> v2= new Vector<Vector<String>>();
+ Vector<String> v3= new Vector<String>();
+
+ v3.add(new String("fff")); // String <= E[v3] --> String is
+ // not parametric --> nothing to unify
+ v2.add(v3); // v3 <= E[v2] --> 2. unify (E[v3], E[E[v2]])
+ v1.add(v2.get(0)); // E[v2] <= E[v1] --> 1. unify (E[E[v2]], E[E[v1]])
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/in/A.java
new file mode 100644
index 000000000..ec669b8e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+ void foo() {
+ Vector v1= new Vector();
+ Vector v2= new Vector();
+ v2.add(v1);
+ v1.add(v2);
+ }
+ void bar() {
+ Vector v3= new Vector();
+ v3.add(v3);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/out/A.java
new file mode 100644
index 000000000..d70e94cda
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuNestedVectors1/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+ void foo() {
+ Vector<Vector<Vector>> v1= new Vector<Vector<Vector>>();
+ Vector<Vector> v2= new Vector<Vector>();
+ v2.add(v1);
+ v1.add(v2);
+ }
+ void bar() {
+ Vector<Vector> v3= new Vector<Vector>();
+ v3.add(v3);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/in/A.java
new file mode 100644
index 000000000..39f95617f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/in/A.java
@@ -0,0 +1,4 @@
+package p;
+
+class A<T extends A<T>> {}
+class B<T> extends A<B<T>> {}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/out/A.java
new file mode 100644
index 000000000..39f95617f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuParameterizedTypes1/out/A.java
@@ -0,0 +1,4 @@
+package p;
+
+class A<T extends A<T>> {}
+class B<T> extends A<B<T>> {}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/in/A.java
new file mode 100644
index 000000000..97ee5717c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+ A() {
+ java.util.List list= new java.util.ArrayList();
+ list.add(1);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/out/A.java
new file mode 100644
index 000000000..888816341
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuQualifiedName/out/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+ A() {
+ java.util.List<Integer> list= new java.util.ArrayList<Integer>();
+ list.add(1);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/in/A.java
new file mode 100644
index 000000000..4148448ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/in/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class A {
+ private void createTestList(TestCollector collector) {
+ Enumeration each= collector.collectTests();
+ while (each.hasMoreElements()) {
+ String s= (String) each.nextElement();
+ }
+ }
+}
+
+interface TestCollector {
+ public Enumeration collectTests();
+}
+
+class Collector implements TestCollector {
+ public Enumeration collectTests() {
+ Vector v= new Vector();
+ v.add("Test1");
+ return v.elements();
+ }
+
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/out/A.java
new file mode 100644
index 000000000..d576632bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods/out/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class A {
+ private void createTestList(TestCollector collector) {
+ Enumeration<String> each= collector.collectTests();
+ while (each.hasMoreElements()) {
+ String s= each.nextElement();
+ }
+ }
+}
+
+interface TestCollector {
+ public Enumeration<String> collectTests();
+}
+
+class Collector implements TestCollector {
+ public Enumeration<String> collectTests() {
+ Vector<String> v= new Vector<String>();
+ v.add("Test1");
+ return v.elements();
+ }
+
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/in/A.java
new file mode 100644
index 000000000..b579e86fa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/in/A.java
@@ -0,0 +1,22 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+interface I {
+ public List getList();
+}
+
+class A implements I {
+ public List getList() {
+ List list= new ArrayList();
+ list.add("X");
+ return list;
+ }
+}
+
+class B extends A {
+ public List getList() {
+ return null;
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/out/A.java
new file mode 100644
index 000000000..532990045
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods2/out/A.java
@@ -0,0 +1,22 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+interface I {
+ public List<String> getList();
+}
+
+class A implements I {
+ public List<String> getList() {
+ List<String> list= new ArrayList<String>();
+ list.add("X");
+ return list;
+ }
+}
+
+class B extends A {
+ public List<String> getList() {
+ return null;
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/in/A.java
new file mode 100644
index 000000000..094994df3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/in/A.java
@@ -0,0 +1,31 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ public List getList() {
+ List list= new ArrayList();
+ list.add("X");
+ return list;
+ }
+}
+
+interface I {
+ public List getList();
+}
+
+class C extends A implements I {
+ // Inherits getList() from A and I, but does NOT induce a connection
+ // between them by redeclaring the method.
+ //
+ // Ways to deal:
+ // A) Always calculate RippleMethods (but only once per method!).
+ // B) If CU of C is found & processed:
+ // connect inherited methods from A with matching methods from I.
+ // If it is not guaranteed that C will be processed:
+ // need a subtype hierarchy on A and I ==> A) RippleMethods.
+// void use() {
+// List l= getList();
+// }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/out/A.java
new file mode 100644
index 000000000..629c0ee48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuRippleMethods3/out/A.java
@@ -0,0 +1,31 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ public List<String> getList() {
+ List<String> list= new ArrayList<String>();
+ list.add("X");
+ return list;
+ }
+}
+
+interface I {
+ public List<String> getList();
+}
+
+class C extends A implements I {
+ // Inherits getList() from A and I, but does NOT induce a connection
+ // between them by redeclaring the method.
+ //
+ // Ways to deal:
+ // A) Always calculate RippleMethods (but only once per method!).
+ // B) If CU of C is found & processed:
+ // connect inherited methods from A with matching methods from I.
+ // If it is not guaranteed that C will be processed:
+ // need a subtype hierarchy on A and I ==> A) RippleMethods.
+// void use() {
+// List l= getList();
+// }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/in/A.java
new file mode 100644
index 000000000..840b82329
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List list= new ArrayList();
+ list.add(new Super());
+ List l= list;
+ l.add(new Sub());
+ }
+}
+
+class Super {}
+class Sub extends Super {} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/out/A.java
new file mode 100644
index 000000000..cbc7104dc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSuperAndSub/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ void foo() {
+ List<Super> list= new ArrayList<Super>();
+ list.add(new Super());
+ List<Super> l= list;
+ l.add(new Sub());
+ }
+}
+
+class Super {}
+class Sub extends Super {} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/in/A.java
new file mode 100644
index 000000000..0c0248c19
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.*;
+
+class A {
+ private final List _binPaths = Collections.synchronizedList(new ArrayList());
+
+ List get() {
+ return new ArrayList(_binPaths);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/out/A.java
new file mode 100644
index 000000000..76c847400
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuSynchronizedList/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.*;
+
+class A {
+ private final List<?> _binPaths = Collections.synchronizedList(new ArrayList<Object>());
+
+ List<?> get() {
+ return new ArrayList<Object>(_binPaths);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/in/A.java
new file mode 100644
index 000000000..b5c9404b1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/in/A.java
@@ -0,0 +1,23 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+@SuppressWarnings("unused")
+class A {
+ {
+ Collection c= new LinkedList();
+ c.add(42);
+ Generic g= new Generic();
+ List list= g.toList(c);
+ ArrayList arrayList= (ArrayList) g.toList(c);
+ }
+}
+
+class Generic<E> {
+ public <T> List<T> toList(Collection<T> c) {
+ return new ArrayList<T>(c);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/out/A.java
new file mode 100644
index 000000000..fbbd5cf30
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray01/out/A.java
@@ -0,0 +1,23 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+@SuppressWarnings("unused")
+class A {
+ {
+ Collection<Integer> c= new LinkedList<Integer>();
+ c.add(42);
+ Generic g= new Generic();
+ List<Integer> list= g.toList(c);
+ ArrayList<Integer> arrayList= (ArrayList<Integer>) g.toList(c);
+ }
+}
+
+class Generic<E> {
+ public <T> List<T> toList(Collection<T> c) {
+ return new ArrayList<T>(c);
+ }
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/in/A.java
new file mode 100644
index 000000000..c5b211385
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/in/A.java
@@ -0,0 +1,30 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+
+ String[] m() {
+ List l= new ArrayList();
+ l.add("Hello");
+ return (String[]) l.toArray(new String[l.size()]);
+ }
+ String[][] m2() {
+ List l= new ArrayList();
+ l.add(new String[] {"Hello"});
+ return (String[][]) l.toArray(new String[l.size()][]);
+ }
+
+
+ String[] test() {
+ ArrayList list= new ArrayList();
+ list.add(42);
+ return (String[]) list.toArray(new String[list.size()]);
+ }
+
+ String[] test2() {
+ ArrayList list= new ArrayList();
+ return (String[]) list.toArray(new String[list.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/out/A.java
new file mode 100644
index 000000000..b303bad58
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuToArray02/out/A.java
@@ -0,0 +1,30 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+
+ String[] m() {
+ List<String> l= new ArrayList<String>();
+ l.add("Hello");
+ return l.toArray(new String[l.size()]);
+ }
+ String[][] m2() {
+ List<String[]> l= new ArrayList<String[]>();
+ l.add(new String[] {"Hello"});
+ return l.toArray(new String[l.size()][]);
+ }
+
+
+ String[] test() {
+ ArrayList<Integer> list= new ArrayList<Integer>();
+ list.add(42);
+ return list.toArray(new String[list.size()]);
+ }
+
+ String[] test2() {
+ ArrayList list= new ArrayList();
+ return (String[]) list.toArray(new String[list.size()]);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/in/A.java
new file mode 100644
index 000000000..8b129d060
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+class A {
+ public static void exec() {
+ ArrayList v1= new ArrayList();
+ ArrayList v2= new ArrayList();
+ v2.add("");
+ Iterator iterator1 = v1.iterator();
+ Iterator iterator2 = v2.iterator();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/out/A.java
new file mode 100644
index 000000000..7830ab663
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTwoVectorElements/out/A.java
@@ -0,0 +1,14 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+class A {
+ public static void exec() {
+ ArrayList v1= new ArrayList();
+ ArrayList<String> v2= new ArrayList<String>();
+ v2.add("");
+ Iterator iterator1 = v1.iterator();
+ Iterator<String> iterator2 = v2.iterator();
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/in/A.java
new file mode 100644
index 000000000..71c5bfe64
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.lang.reflect.Method;
+
+@SuppressWarnings("deprecation")
+public class A {
+ void m(A a) throws Exception {
+ Class clazz = a.getClass();
+ Method method = clazz.getMethod("m", A.class);
+ SuppressWarnings suppressed = method.getAnnotation(SuppressWarnings.class);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/out/A.java
new file mode 100644
index 000000000..13ec32c76
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeLiteral/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.lang.reflect.Method;
+
+@SuppressWarnings("deprecation")
+public class A {
+ void m(A a) throws Exception {
+ Class<? extends A> clazz = a.getClass();
+ Method method = clazz.getMethod("m", A.class);
+ SuppressWarnings suppressed = method.getAnnotation(SuppressWarnings.class);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/in/A.java
new file mode 100644
index 000000000..d4d21756d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.Vector;
+
+class TypeParams9<T1 extends Number & Comparable> {
+ Comparable f(T1 t1) {
+ Vector v1 = new Vector();
+ v1.add(t1);
+ v1.add(new Integer(1));
+ v1.add("");
+ return (Comparable) v1.get(0);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/out/A.java
new file mode 100644
index 000000000..3263a7a42
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuTypeParams9/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.Vector;
+
+class TypeParams9<T1 extends Number & Comparable> {
+ Comparable f(T1 t1) {
+ Vector<Comparable> v1 = new Vector<Comparable>();
+ v1.add(t1);
+ v1.add(new Integer(1));
+ v1.add("");
+ return v1.get(0);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/in/A.java
new file mode 100644
index 000000000..483a39ace
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ {
+ ArrayList arrayList = new ArrayList();
+ arrayList.add(12L);
+ take("");
+ take("", arrayList);
+ take("", new ArrayList[] {arrayList});
+ take("", arrayList, arrayList);
+ }
+ void take(String format, List... args) {}
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/out/A.java
new file mode 100644
index 000000000..b636b51de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testCuVarargs01/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ {
+ ArrayList<Long> arrayList = new ArrayList<Long>();
+ arrayList.add(12L);
+ take("");
+ take("", arrayList);
+ take("", new ArrayList[] {arrayList});
+ take("", arrayList, arrayList);
+ }
+ void take(String format, List... args) {}
+} \ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/A.java
new file mode 100644
index 000000000..e89288b11
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class PairDance {
+ public static void main(String[] args) {
+ InvertedPair/*<Integer, Double>*/ ip= new InvertedPair/*<Integer, Double>*/();
+ Pair/*<Double, Integer>*/ p= ip;
+ p.setA(new Double(1.1));
+ Double a= (Double) ip.getA();
+ ip.setB(new Integer(2));
+ System.out.println(ip);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/InvertedPair.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/InvertedPair.java
new file mode 100644
index 000000000..39e41fe32
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/InvertedPair.java
@@ -0,0 +1,10 @@
+package p;
+
+class InvertedPair<A, B> extends Pair<B, A> {
+ public B getA() {
+ return super.getA();
+ }
+ public void setB(A bee) {
+ super.setB(bee);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/Pair.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/Pair.java
new file mode 100644
index 000000000..57d04c113
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/in/Pair.java
@@ -0,0 +1,22 @@
+package p;
+
+public class Pair<A, B> {
+ private A a;
+ private B b;
+
+ public A getA() {
+ return a;
+ }
+ public void setA(A a) {
+ this.a= a;
+ }
+ public B getB() {
+ return b;
+ }
+ public void setB(B bee) {
+ b= bee;
+ }
+ public String toString() {
+ return super.toString() + ", a=" + a + ", b=" + b;
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/A.java
new file mode 100644
index 000000000..048a34133
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class PairDance {
+ public static void main(String[] args) {
+ InvertedPair/*<Integer, Double>*/<Integer, Double> ip= new InvertedPair/*<Integer, Double>*/<Integer, Double>();
+ Pair/*<Double, Integer>*/<Double, Integer> p= ip;
+ p.setA(new Double(1.1));
+ Double a= ip.getA();
+ ip.setB(new Integer(2));
+ System.out.println(ip);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/InvertedPair.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/InvertedPair.java
new file mode 100644
index 000000000..39e41fe32
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/InvertedPair.java
@@ -0,0 +1,10 @@
+package p;
+
+class InvertedPair<A, B> extends Pair<B, A> {
+ public B getA() {
+ return super.getA();
+ }
+ public void setB(A bee) {
+ super.setB(bee);
+ }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/Pair.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/Pair.java
new file mode 100644
index 000000000..57d04c113
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/InferTypeArguments/testPairDance/out/Pair.java
@@ -0,0 +1,22 @@
+package p;
+
+public class Pair<A, B> {
+ private A a;
+ private B b;
+
+ public A getA() {
+ return a;
+ }
+ public void setA(A a) {
+ this.a= a;
+ }
+ public B getB() {
+ return b;
+ }
+ public void setB(B bee) {
+ b= bee;
+ }
+ public String toString() {
+ return super.toString() + ", a=" + a + ", b=" + b;
+ }
+}

Back to the top