View | Details | Raw Unified | Return to bug 141800
Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/compiler/regression/VarargsTest.java (+39 lines)
Lines 1752-1755 Link Here
1752
				},
1752
				},
1753
				"121212");
1753
				"121212");
1754
	}
1754
	}
1755
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=141800
1756
	public void test050() {
1757
		this.runNegativeTest(
1758
				new String[] {
1759
					"X.java",
1760
					" import java.util.Arrays;\n" + 
1761
					" public class X {\n" + 
1762
					"   public static void main( String args[] ) {\n" + 
1763
					"      Object test = new Object[] { \"Hello\", \"World\" };\n" + 
1764
					"      System.out.println(Arrays.asList(test));\n" + 
1765
					"      System.out.println(Arrays.asList((Object[])test)); // Warning here\n" + 
1766
					"	   Zork z;\n" +
1767
					"   }\n" + 
1768
					"}",
1769
				},
1770
				// ensure no complaint about unnecessary cast
1771
				"----------\n" + 
1772
				"1. ERROR in X.java (at line 7)\n" + 
1773
				"	Zork z;\n" + 
1774
				"	^^^^\n" + 
1775
				"Zork cannot be resolved to a type\n" + 
1776
				"----------\n");
1777
	}	
1778
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=141800 - variation
1779
	public void test051() {
1780
		this.runConformTest(
1781
				new String[] {
1782
					"X.java",
1783
					" import java.util.Arrays;\n" + 
1784
					" public class X {\n" + 
1785
					"   public static void main( String args[] ) {\n" + 
1786
					"      Object test = new Object[] { \"Hello\", \"World\" };\n" + 
1787
					"      System.out.print(Arrays.asList(test).size());\n" + 
1788
					"      System.out.println(Arrays.asList((Object[])test).size()); // Warning here\n" + 
1789
					"   }\n" + 
1790
					"}",
1791
				},
1792
				"12");
1793
	}	
1755
}
1794
}
(-)compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java (-8 / +6 lines)
Lines 253-267 Link Here
253
						ArrayBinding varargsType = (ArrayBinding) binding.parameters[varargsIndex];
253
						ArrayBinding varargsType = (ArrayBinding) binding.parameters[varargsIndex];
254
						TypeBinding lastArgType = alternateArgumentTypes[varargsIndex];
254
						TypeBinding lastArgType = alternateArgumentTypes[varargsIndex];
255
						// originalType may be compatible already, but cast mandated to clarify between varargs/non-varargs call
255
						// originalType may be compatible already, but cast mandated to clarify between varargs/non-varargs call
256
						int dimensions = lastArgType.dimensions();
256
						if (varargsType.dimensions !=  lastArgType.dimensions()) {
257
						if (varargsType.dimensions < dimensions) {
258
							return;
257
							return;
259
						} else if (varargsType.dimensions == dimensions) {
258
						}
260
							if (lastArgType.isCompatibleWith(varargsType.elementsType())
259
						if (lastArgType.isCompatibleWith(varargsType.elementsType())
261
									&& lastArgType.isCompatibleWith(varargsType)) {
260
								&& lastArgType.isCompatibleWith(varargsType)) {
262
								return;
261
							return;
263
							}
262
						}
264
						}						
265
				   }
263
				   }
266
				}
264
				}
267
				for (int i = 0; i < argumentLength; i++) {
265
				for (int i = 0; i < argumentLength; i++) {

Return to bug 141800