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

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java (-1 / +3 lines)
Lines 422-428 Link Here
422
			if (method instanceof ParameterizedGenericMethodBinding) {
422
			if (method instanceof ParameterizedGenericMethodBinding) {
423
				if (!((ParameterizedGenericMethodBinding) method).wasInferred) {
423
				if (!((ParameterizedGenericMethodBinding) method).wasInferred) {
424
					// attempt to invoke generic method of raw type with type hints <String>foo()
424
					// attempt to invoke generic method of raw type with type hints <String>foo()
425
					return new ProblemMethodBinding(method, method.selector, genericTypeArguments, ProblemReasons.TypeArgumentsForRawGenericMethod);
425
					if (compilerOptions().complianceLevel < ClassFileConstants.JDK1_7) {
426
						return new ProblemMethodBinding(method, method.selector, genericTypeArguments, ProblemReasons.TypeArgumentsForRawGenericMethod);
427
					}
426
				}
428
				}
427
			} else {
429
			} else {
428
				if (compilerOptions().complianceLevel < ClassFileConstants.JDK1_7) {
430
				if (compilerOptions().complianceLevel < ClassFileConstants.JDK1_7) {
(-)src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java (-30 / +97 lines)
Lines 7369-7405 Link Here
7369
	}
7369
	}
7370
	// generic method of raw type
7370
	// generic method of raw type
7371
	public void test0245() {
7371
	public void test0245() {
7372
		if (this.complianceLevel < ClassFileConstants.JDK1_7) {
7373
			this.runNegativeTest(
7374
					new String[] {
7375
						"X.java",
7376
						"public class X <T> { \n" + 
7377
						"        <G> T foo(G g) {\n" + 
7378
						"            return null;\n" + 
7379
						"        }\n" + 
7380
						"        T bar(T t) {\n" + 
7381
						"        	return zork;\n" + 
7382
						"        }\n" + 
7383
						"\n" + 
7384
						"        public static void main(String[] args) {\n" + 
7385
						"                X rx = new X();\n" + 
7386
						"                rx.<String>foo(\"hello\"); // Eclipse error here\n" + 
7387
						"                rx.<String>bar(\"hello\"); // Eclipse error here\n" + 
7388
						"        }\n" + 
7389
						"}\n"
7390
					},
7391
					"----------\n" + 
7392
					"1. ERROR in X.java (at line 6)\n" + 
7393
					"	return zork;\n" + 
7394
					"	       ^^^^\n" + 
7395
					"zork cannot be resolved\n" + 
7396
					"----------\n" + 
7397
					"2. WARNING in X.java (at line 10)\n" + 
7398
					"	X rx = new X();\n" + 
7399
					"	^\n" + 
7400
					"X is a raw type. References to generic type X<T> should be parameterized\n" + 
7401
					"----------\n" + 
7402
					"3. WARNING in X.java (at line 10)\n" + 
7403
					"	X rx = new X();\n" + 
7404
					"	           ^\n" + 
7405
					"X is a raw type. References to generic type X<T> should be parameterized\n" + 
7406
					"----------\n" + 
7407
					"4. ERROR in X.java (at line 11)\n" + 
7408
					"	rx.<String>foo(\"hello\"); // Eclipse error here\n" + 
7409
					"	           ^^^\n" + 
7410
					"The method foo(Object) of raw type X is no longer generic; it cannot be parameterized with arguments <String>\n" + 
7411
					"----------\n" + 
7412
					"5. ERROR in X.java (at line 12)\n" + 
7413
					"	rx.<String>bar(\"hello\"); // Eclipse error here\n" + 
7414
					"	           ^^^\n" + 
7415
					"The method bar(Object) of type X is not generic; it cannot be parameterized with arguments <String>\n" + 
7416
					"----------\n",
7417
					JavacTestOptions.EclipseHasABug.EclipseBug236242);
7418
			return;
7419
		}
7372
		this.runNegativeTest(
7420
		this.runNegativeTest(
7373
			new String[] {
7421
				new String[] {
7374
				"X.java",
7422
					"X.java",
7375
				"public class X <T> { \n" +
7423
					"public class X <T> { \n" + 
7376
				"	<G> T foo(G g) {\n" +
7424
					"        <G> T foo(G g) {\n" + 
7377
				"		return null;\n" +
7425
					"            return null;\n" + 
7378
				"	}\n" +
7426
					"        }\n" + 
7379
				"	\n" +
7427
					"        T bar(T t) {\n" + 
7380
				"	public static void main(String[] args) {\n" +
7428
					"        	return zork;\n" + 
7381
				"		X rx = new X();\n" +
7429
					"        }\n" + 
7382
				"		rx.<String>foo(\"hello\");\n" +
7430
					"\n" + 
7383
				"	}\n" +
7431
					"        public static void main(String[] args) {\n" + 
7384
				"}\n"
7432
					"                X rx = new X();\n" + 
7385
			},
7433
					"                rx.<String>foo(\"hello\"); // Eclipse error here\n" + 
7386
			"----------\n" +
7434
					"                rx.<String>bar(\"hello\"); // Eclipse error here\n" + 
7387
			"1. WARNING in X.java (at line 7)\n" +
7435
					"        }\n" + 
7388
			"	X rx = new X();\n" +
7436
					"}\n"
7389
			"	^\n" +
7437
				},
7390
			"X is a raw type. References to generic type X<T> should be parameterized\n" +
7438
				"----------\n" + 
7391
			"----------\n" +
7439
				"1. ERROR in X.java (at line 6)\n" + 
7392
			"2. WARNING in X.java (at line 7)\n" +
7440
				"	return zork;\n" + 
7393
			"	X rx = new X();\n" +
7441
				"	       ^^^^\n" + 
7394
			"	           ^\n" +
7442
				"zork cannot be resolved\n" + 
7395
			"X is a raw type. References to generic type X<T> should be parameterized\n" +
7443
				"----------\n" + 
7396
			"----------\n" +
7444
				"2. WARNING in X.java (at line 10)\n" + 
7397
			"3. ERROR in X.java (at line 8)\n" +
7445
				"	X rx = new X();\n" + 
7398
			"	rx.<String>foo(\"hello\");\n" +
7446
				"	^\n" + 
7399
			"	           ^^^\n" +
7447
				"X is a raw type. References to generic type X<T> should be parameterized\n" + 
7400
			"The method foo(Object) of raw type X is no longer generic; it cannot be parameterized with arguments <String>\n" +
7448
				"----------\n" + 
7401
			"----------\n",
7449
				"3. WARNING in X.java (at line 10)\n" + 
7402
			JavacTestOptions.EclipseHasABug.EclipseBug236242);
7450
				"	X rx = new X();\n" + 
7451
				"	           ^\n" + 
7452
				"X is a raw type. References to generic type X<T> should be parameterized\n" + 
7453
				"----------\n" + 
7454
				"4. WARNING in X.java (at line 11)\n" + 
7455
				"	rx.<String>foo(\"hello\"); // Eclipse error here\n" + 
7456
				"	^^^^^^^^^^^^^^^^^^^^^^^\n" + 
7457
				"Type safety: The method foo(Object) belongs to the raw type X. References to generic type X<T> should be parameterized\n" + 
7458
				"----------\n" + 
7459
				"5. WARNING in X.java (at line 12)\n" + 
7460
				"	rx.<String>bar(\"hello\"); // Eclipse error here\n" + 
7461
				"	^^^^^^^^^^^^^^^^^^^^^^^\n" + 
7462
				"Type safety: The method bar(Object) belongs to the raw type X. References to generic type X<T> should be parameterized\n" + 
7463
				"----------\n" + 
7464
				"6. WARNING in X.java (at line 12)\n" + 
7465
				"	rx.<String>bar(\"hello\"); // Eclipse error here\n" + 
7466
				"	    ^^^^^^\n" + 
7467
				"Unused type arguments for the non generic method bar(Object) of type X; it should not be parameterized with arguments <String>\n" + 
7468
				"----------\n",
7469
				JavacTestOptions.EclipseHasABug.EclipseBug236242);
7403
	}
7470
	}
7404
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=69320 parameterized type compatibility
7471
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=69320 parameterized type compatibility
7405
	public void test0246() {
7472
	public void test0246() {

Return to bug 236242