View | Details | Raw Unified | Return to bug 189933 | Differences between
and this patch

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java (-1 / +1 lines)
Lines 2581-2587 Link Here
2581
				if (oneParam.isCompatibleWith(twoParam)) {
2581
				if (oneParam.isCompatibleWith(twoParam)) {
2582
					if (oneParam.leafComponentType().isRawType()) {
2582
					if (oneParam.leafComponentType().isRawType()) {
2583
						// A#RAW is not more specific than a rawified A<T>
2583
						// A#RAW is not more specific than a rawified A<T>
2584
						if (oneParam.needsUncheckedConversion(two.original().parameters[i]))
2584
						if (oneParam.needsUncheckedConversion(two.declaringClass.isRawType() ? twoParam : two.original().parameters[i]))
2585
							return false;
2585
							return false;
2586
					}
2586
					}
2587
				} else {
2587
				} else {
(-)src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java (-32 / +52 lines)
Lines 2090-2148 Link Here
2090
		"----------\n"
2090
		"----------\n"
2091
	);
2091
	);
2092
}
2092
}
2093
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=191029
2094
public void test059a() {
2095
	this.runNegativeTest(
2096
		new String[] {
2097
			"X.java",
2098
			"import java.util.TreeMap;\n" + 
2099
			"class X {\n" + 
2100
			"	void test(TreeMap<String, Object> tm) {\n" + 
2101
			"		TreeMap copy = new TreeMap(tm);\n" + 
2102
			"	}\n" + 
2103
			"}"
2104
		},
2105
		"----------\n" + 
2106
		"1. WARNING in X.java (at line 4)\n" + 
2107
		"	TreeMap copy = new TreeMap(tm);\n" + 
2108
		"	^^^^^^^\n" + 
2109
		"TreeMap is a raw type. References to generic type TreeMap<K,V> should be parameterized\n" + 
2110
		"----------\n" + 
2111
		"2. WARNING in X.java (at line 4)\n" + 
2112
		"	TreeMap copy = new TreeMap(tm);\n" + 
2113
		"	               ^^^^^^^^^^^^^^^\n" + 
2114
		"Type safety: The constructor TreeMap(SortedMap) belongs to the raw type TreeMap. References to generic type TreeMap<K,V> should be parameterized\n" + 
2115
		"----------\n" + 
2116
		"3. WARNING in X.java (at line 4)\n" + 
2117
		"	TreeMap copy = new TreeMap(tm);\n" + 
2118
		"	                   ^^^^^^^\n" + 
2119
		"TreeMap is a raw type. References to generic type TreeMap<K,V> should be parameterized\n" + 
2120
		"----------\n"
2121
	);
2122
}
2093
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=189933
2123
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=189933
2094
public void _test060() {
2124
public void test060() {
2095
	this.runConformTest(
2125
	this.runConformTest(
2096
		new String[] {
2126
		new String[] {
2097
			"X.java",
2127
			"X.java",
2098
			"public class X<T> {\n" + 
2128
			"public class X<T> {\n" + 
2099
			"  public void bar(K<T, Object> p) {\n" + 
2129
			"	public void bar(K<T, Object> p) {\n" + 
2100
			"    new Y(p);\n" + 
2130
			"		new Y(p);\n" + 
2101
			"    new Y((J<T, Object>) p);\n" + 
2131
			"		new Y((J<T, Object>) p);\n" + 
2102
			"    new Y((I<T, Object>) p);\n" + 
2132
			"		new Y((I<T, Object>) p);\n" + 
2103
			"  }\n" + 
2133
			"	}\n" + 
2104
			"}\n" + 
2134
			"}\n" + 
2105
			"class Y<T, U> {\n" + 
2135
			"class Y<T, U> {\n" + 
2106
			"  Y(I<? extends T, ? extends U> p) {\n" + 
2136
			"	Y(I<? extends T, ? extends U> p) {}\n" + 
2107
			"  }\n" + 
2137
			"	Y(J<T, ? extends U> p) {}\n" + 
2108
			"  Y(J<T, ? extends U> p) {\n" + 
2109
			"  }\n" + 
2110
			"}\n" + 
2111
			"interface I<T, U> {  \n" + 
2112
			"}\n" + 
2113
			"interface J<T, U> extends I<T, U> {\n" + 
2114
			"}\n" + 
2138
			"}\n" + 
2115
			"interface K<T, U> extends I<T, U>, J<T, U> {\n" + 
2139
			"interface I<T, U> {}\n" + 
2116
			"}"
2140
			"interface J<T, U> extends I<T, U> {}\n" + 
2141
			"interface K<T, U> extends I<T, U>, J<T, U> {}"
2117
		},
2142
		},
2118
		""
2143
		""
2119
	);
2144
	);
2120
}
2145
}
2121
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=189933
2146
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=189933
2122
// variant
2147
// variant
2123
public void _test061() {
2148
public void test061() {
2124
	this.runNegativeTest(
2149
	this.runNegativeTest(
2125
		new String[] {
2150
		new String[] {
2126
			"X.java",
2151
			"X.java",
2127
			"public class X<T> {\n" + 
2152
			"public class X<T> {\n" + 
2128
			"  public void bar(K<T, Object> p) {\n" + 
2153
			"	public void bar(K<T, Object> p) {\n" + 
2129
			"    new Y(p);\n" + 
2154
			"		new Y(p);\n" + 
2130
			"    new Y((J<T, Object>) p);\n" + 
2155
			"		new Y((J<T, Object>) p);\n" + 
2131
			"    new Y((I<T, Object>) p);\n" + 
2156
			"		new Y((I<T, Object>) p);\n" + 
2132
			"  }\n" + 
2157
			"	}\n" + 
2133
			"}\n" + 
2158
			"}\n" + 
2134
			"class Y<T, U> {\n" + 
2159
			"class Y<T, U> {\n" + 
2135
			"  Y(I<? extends T, ? extends U> p) {\n" + 
2160
			"	Y(I<? extends T, ? extends U> p) {}\n" + 
2136
			"  }\n" + 
2161
			"	Y(J<T, ? extends U> p) {}\n" + 
2137
			"  Y(J<T, ? extends U> p) {\n" + 
2138
			"  }\n" + 
2139
			"}\n" + 
2140
			"interface I<T, U> {  \n" + 
2141
			"}\n" + 
2162
			"}\n" + 
2142
			"interface J<T, U> {\n" + 
2163
			"interface I<T, U> {}\n" + 
2143
			"}\n" + 
2164
			"interface J<T, U> {}\n" + 
2144
			"interface K<T, U> extends I<T, U>, J<T, U> {\n" + 
2165
			"interface K<T, U> extends I<T, U>, J<T, U> {}"
2145
			"}"
2146
		},
2166
		},
2147
		"----------\n" + 
2167
		"----------\n" + 
2148
		"1. ERROR in X.java (at line 3)\n" + 
2168
		"1. ERROR in X.java (at line 3)\n" + 

Return to bug 189933