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

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java (+1 lines)
Lines 245-250 Link Here
245
						|| (expressionType.isBaseType()  // narrowing then boxing ?
245
						|| (expressionType.isBaseType()  // narrowing then boxing ?
246
								&& scope.compilerOptions().sourceLevel >= ClassFileConstants.JDK1_5 // autoboxing
246
								&& scope.compilerOptions().sourceLevel >= ClassFileConstants.JDK1_5 // autoboxing
247
								&& !methodType.isBaseType()
247
								&& !methodType.isBaseType()
248
								&& !methodType.isTypeVariable()
248
								&& this.expression.isConstantValueOfTypeAssignableToType(expressionType, scope.environment().computeBoxingType(methodType)))) {
249
								&& this.expression.isConstantValueOfTypeAssignableToType(expressionType, scope.environment().computeBoxingType(methodType)))) {
249
		this.expression.computeConversion(scope, methodType, expressionType);
250
		this.expression.computeConversion(scope, methodType, expressionType);
250
		if (this.expression instanceof CastExpression
251
		if (this.expression instanceof CastExpression
(-)src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java (+59 lines)
Lines 5043-5046 Link Here
5043
		"The expression of type Integer is unboxed into int\n" + 
5043
		"The expression of type Integer is unboxed into int\n" + 
5044
		"----------\n");
5044
		"----------\n");
5045
}
5045
}
5046
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=264843
5047
public void test168() {
5048
	this.runNegativeTest(
5049
		new String[] {
5050
			"X.java",
5051
			"public class X {\n" + 
5052
			"    <T extends Integer> T a() { return 35; }\n" + 
5053
			"    <T extends Integer> T[] b() { return new int[]{35}; }\n" + 
5054
			"    <T extends Integer> T c() { return new Integer(35); }\n" +
5055
			"    <T extends Integer> T[] d() { return new Integer[]{35}; }\n" + 
5056
			"}\n",
5057
		},
5058
		"----------\n" + 
5059
		"1. WARNING in X.java (at line 2)\n" + 
5060
		"	<T extends Integer> T a() { return 35; }\n" + 
5061
		"	           ^^^^^^^\n" + 
5062
		"The type parameter T should not be bounded by the final type Integer. Final types cannot be further extended\n" + 
5063
		"----------\n" + 
5064
		"2. ERROR in X.java (at line 2)\n" + 
5065
		"	<T extends Integer> T a() { return 35; }\n" + 
5066
		"	                                   ^^\n" + 
5067
		"Type mismatch: cannot convert from int to T\n" + 
5068
		"----------\n" + 
5069
		"3. WARNING in X.java (at line 3)\n" + 
5070
		"	<T extends Integer> T[] b() { return new int[]{35}; }\n" + 
5071
		"	           ^^^^^^^\n" + 
5072
		"The type parameter T should not be bounded by the final type Integer. Final types cannot be further extended\n" + 
5073
		"----------\n" + 
5074
		"4. ERROR in X.java (at line 3)\n" + 
5075
		"	<T extends Integer> T[] b() { return new int[]{35}; }\n" + 
5076
		"	                                     ^^^^^^^^^^^^^\n" + 
5077
		"Type mismatch: cannot convert from int[] to T[]\n" + 
5078
		"----------\n" + 
5079
		"5. WARNING in X.java (at line 4)\n" + 
5080
		"	<T extends Integer> T c() { return new Integer(35); }\n" + 
5081
		"	           ^^^^^^^\n" + 
5082
		"The type parameter T should not be bounded by the final type Integer. Final types cannot be further extended\n" + 
5083
		"----------\n" + 
5084
		"6. ERROR in X.java (at line 4)\n" + 
5085
		"	<T extends Integer> T c() { return new Integer(35); }\n" + 
5086
		"	                                   ^^^^^^^^^^^^^^^\n" + 
5087
		"Type mismatch: cannot convert from Integer to T\n" + 
5088
		"----------\n" + 
5089
		"7. WARNING in X.java (at line 5)\n" + 
5090
		"	<T extends Integer> T[] d() { return new Integer[]{35}; }\n" + 
5091
		"	           ^^^^^^^\n" + 
5092
		"The type parameter T should not be bounded by the final type Integer. Final types cannot be further extended\n" + 
5093
		"----------\n" + 
5094
		"8. ERROR in X.java (at line 5)\n" + 
5095
		"	<T extends Integer> T[] d() { return new Integer[]{35}; }\n" + 
5096
		"	                                     ^^^^^^^^^^^^^^^^^\n" + 
5097
		"Type mismatch: cannot convert from Integer[] to T[]\n" + 
5098
		"----------\n" + 
5099
		"9. WARNING in X.java (at line 5)\n" + 
5100
		"	<T extends Integer> T[] d() { return new Integer[]{35}; }\n" + 
5101
		"	                                                   ^^\n" + 
5102
		"The expression of type int is boxed into Integer\n" + 
5103
		"----------\n");
5104
}
5046
}
5105
}

Return to bug 264843