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

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java (-2 / +266 lines)
Lines 37-44 Link Here
37
	// All specified tests which does not belong to the class are skipped...
37
	// All specified tests which does not belong to the class are skipped...
38
	static {
38
	static {
39
//		TESTS_NAMES = new String[] { "test127" };
39
//		TESTS_NAMES = new String[] { "test127" };
40
//		TESTS_NUMBERS = new int[] { 15 };
40
//		TESTS_NUMBERS = new int[] { 166 };
41
		TESTS_RANGE = new int[] { 165, 170 };
41
//		TESTS_RANGE = new int[] { 165, 170 };
42
	}
42
	}
43
	public static Test suite() {
43
	public static Test suite() {
44
		Test suite = buildTestSuite(testClass());
44
		Test suite = buildTestSuite(testClass());
Lines 5112-5115 Link Here
5112
		);
5112
		);
5113
    }
5113
    }
5114
5114
5115
	// check array handling of singleton 
5116
	public void test166() {
5117
		this.runConformTest(
5118
			new String[] {
5119
				"X.java",
5120
				"import java.lang.annotation.Retention;\n" +
5121
				"import java.lang.annotation.RetentionPolicy;\n" +
5122
				"import java.lang.annotation.Inherited;\n" +
5123
				"\n" +
5124
				"@Retention(RetentionPolicy.RUNTIME)\n" +
5125
				"@Inherited()\n" +
5126
				"@interface ParameterAnnotation {\n" +
5127
				"	String value() default \"Default\";\n" +
5128
				"}\n"+
5129
				"@interface ClassAnnotation {\n" +
5130
				"	String value() default \"Default\";\n" +
5131
				"}\n" +
5132
				"\n" +
5133
				"enum EnumClass{\n" +
5134
				"	Value1, Value2, Value3\n" +
5135
				"}\n" +
5136
				"\n" +
5137
				"@Retention(RetentionPolicy.RUNTIME)\n" +
5138
				"@Inherited()\n" +
5139
				"@interface ValueAnnotation {\n" +
5140
				"	String value() default \"Default\";\n" +
5141
				"	boolean booleanValue() default true;\n" +
5142
				"	char charValue() default \'q\';\n" +
5143
				"	byte byteValue() default 123;\n" +
5144
				"	short shortValue() default 12345;\n" +
5145
				"	int intValue() default 1234567890;\n" +
5146
				"	float floatValue() default 12345.6789f;\n" +
5147
				"	double doubleValue() default 12345.6789;\n" +
5148
				"	long longValue() default 1234567890123456789l;\n" +
5149
				"	String stringValue() default \"stringValue\";\n" +
5150
				"	EnumClass enumValue() default EnumClass.Value1;\n" +
5151
				"	Class classValue() default EnumClass.class;\n" +
5152
				"	ClassAnnotation annotationValue() default @ClassAnnotation();\n" +
5153
				"	boolean[] booleanArrayValue() default {true, false};\n" +
5154
				"	char[] charArrayValue() default {\'q\', \'m\'};\n" +
5155
				"	byte[] byteArrayValue() default {123, -123};\n" +
5156
				"	short[] shortArrayValue() default {12345, -12345};\n" +
5157
				"	int[] intArrayValue() default {1234567890, -1234567890};\n" +
5158
				"	float[] floatArrayValue() default {12345.6789f, -12345.6789f};\n" +
5159
				"	double[] doubleArrayValue() default {12345.6789, -12345.6789};\n" +
5160
				"	long[] longArrayValue() default {1234567890123456789l, -1234567890123456789l};\n" +
5161
				"	String[] stringArrayValue() default {\"stringValue\", \"valueString\"};\n" +
5162
				"	EnumClass[] enumArrayValue() default {EnumClass.Value1, EnumClass.Value2};\n" +
5163
				"	Class[] classArrayValue() default {X.class, EnumClass.class};\n" +
5164
				"	ClassAnnotation[] annotationArrayValue() default {@ClassAnnotation(), @ClassAnnotation()};\n" +
5165
				"}\n" +
5166
				"\n" +
5167
				"public class X {\n" +
5168
				"	@ValueAnnotation(\n" +
5169
				"		value=\"ValueAnnotation\",\n" +
5170
				"		booleanValue=true,\n" +
5171
				"		charValue=\'m\',\n" +
5172
				"		byteValue=-123,\n" +
5173
				"		shortValue=-12345,\n" +
5174
				"		intValue=-1234567890,\n" +
5175
				"		floatValue=-12345.6789f,\n" +
5176
				"		doubleValue=-12345.6789,\n" +
5177
				"		longValue=-1234567890123456789l,\n" +
5178
				"		stringValue=\"valueString\",\n" +
5179
				"		enumValue=EnumClass.Value3,\n" +
5180
				"		classValue=X.class,\n" +
5181
				"		annotationValue=@ClassAnnotation(value=\"ClassAnnotation\"),\n" +
5182
				"		booleanArrayValue={\n" +
5183
				"			false,\n" +
5184
				"			true\n" +
5185
				"		},\n" +
5186
				"		charArrayValue={\n" +
5187
				"			\'m\',\n" +
5188
				"			\'q\'\n" +
5189
				"		},\n" +
5190
				"		byteArrayValue={\n" +
5191
				"			-123,\n" +
5192
				"			123\n" +
5193
				"		},\n" +
5194
				"		shortArrayValue={\n" +
5195
				"			-12345,\n" +
5196
				"			12345\n" +
5197
				"		},\n" +
5198
				"		intArrayValue={\n" +
5199
				"			-1234567890,\n" +
5200
				"			1234567890\n" +
5201
				"		},\n" +
5202
				"		floatArrayValue={\n" +
5203
				"			-12345.6789f,\n" +
5204
				"			12345.6789f\n" +
5205
				"		},\n" +
5206
				"		doubleArrayValue={\n" +
5207
				"			-12345.6789,\n" +
5208
				"			12345.6789\n" +
5209
				"		},\n" +
5210
				"		longArrayValue={\n" +
5211
				"			-1234567890123456789l,\n" +
5212
				"			1234567890123456789l\n" +
5213
				"		},\n" +
5214
				"		stringArrayValue={\n" +
5215
				"			\"valueString\",\n" +
5216
				"			\"stringValue\"\n" +
5217
				"		},\n" +
5218
				"		enumArrayValue={\n" +
5219
				"			EnumClass.Value2,\n" +
5220
				"			EnumClass.Value1\n" +
5221
				"		},\n" +
5222
				"		classArrayValue={\n" +
5223
				"			EnumClass.class,\n" +
5224
				"			X.class\n" +
5225
				"		},\n" +
5226
				"		annotationArrayValue={\n" +
5227
				"			@ClassAnnotation(value=\"ClassAnnotation1\"),\n" +
5228
				"			@ClassAnnotation(value=\"ClassAnnotation2\")\n" +
5229
				"		})\n" +
5230
				"	public String field;\n" +
5231
				"	@ValueAnnotation(\n" +
5232
				"		value=\"ValueAnnotation\",\n" +
5233
				"		booleanValue=true,\n" +
5234
				"		charValue=\'m\',\n" +
5235
				"		byteValue=-123,\n" +
5236
				"		shortValue=-12345,\n" +
5237
				"		intValue=-1234567890,\n" +
5238
				"		floatValue=-12345.6789f,\n" +
5239
				"		doubleValue=-12345.6789,\n" +
5240
				"		longValue=-1234567890123456789l,\n" +
5241
				"		stringValue=\"valueString\",\n" +
5242
				"		enumValue=EnumClass.Value3,\n" +
5243
				"		classValue=X.class,\n" +
5244
				"		annotationValue=@ClassAnnotation(value=\"ClassAnnotation\"),\n" +
5245
				"		booleanArrayValue={\n" +
5246
				"			false,\n" +
5247
				"			true\n" +
5248
				"		},\n" +
5249
				"		charArrayValue={\n" +
5250
				"			\'m\',\n" +
5251
				"			\'q\'\n" +
5252
				"		},\n" +
5253
				"		byteArrayValue={\n" +
5254
				"			-123,\n" +
5255
				"			123\n" +
5256
				"		},\n" +
5257
				"		shortArrayValue={\n" +
5258
				"			-12345,\n" +
5259
				"			12345\n" +
5260
				"		},\n" +
5261
				"		intArrayValue={\n" +
5262
				"			-1234567890,\n" +
5263
				"			1234567890\n" +
5264
				"		},\n" +
5265
				"		floatArrayValue={\n" +
5266
				"			-12345.6789f,\n" +
5267
				"			12345.6789f\n" +
5268
				"		},\n" +
5269
				"		doubleArrayValue={\n" +
5270
				"			-12345.6789,\n" +
5271
				"			12345.6789\n" +
5272
				"		},\n" +
5273
				"		longArrayValue={\n" +
5274
				"			-1234567890123456789l,\n" +
5275
				"			1234567890123456789l\n" +
5276
				"		},\n" +
5277
				"		stringArrayValue={\n" +
5278
				"			\"valueString\",\n" +
5279
				"			\"stringValue\"\n" +
5280
				"		},\n" +
5281
				"		enumArrayValue={\n" +
5282
				"			EnumClass.Value2,\n" +
5283
				"			EnumClass.Value1\n" +
5284
				"		},\n" +
5285
				"		classArrayValue={\n" +
5286
				"			EnumClass.class,\n" +
5287
				"			X.class\n" +
5288
				"		},\n" +
5289
				"		annotationArrayValue={\n" +
5290
				"			@ClassAnnotation(value=\"ClassAnnotation1\"),\n" +
5291
				"			@ClassAnnotation(value=\"ClassAnnotation2\")\n" +
5292
				"		})\n" +
5293
				"	public X(@ParameterAnnotation(value=\"ParameterAnnotation\") @Deprecated() String param1, @ParameterAnnotation(value=\"ParameterAnnotation\") String param2) {\n" +
5294
				"	}\n" +
5295
				"	@ValueAnnotation(\n" +
5296
				"		value=\"ValueAnnotation\",\n" +
5297
				"		booleanValue=true,\n" +
5298
				"		charValue=\'m\',\n" +
5299
				"		byteValue=-123,\n" +
5300
				"		shortValue=-12345,\n" +
5301
				"		intValue=-1234567890,\n" +
5302
				"		floatValue=-12345.6789f,\n" +
5303
				"		doubleValue=-12345.6789,\n" +
5304
				"		longValue=-1234567890123456789l,\n" +
5305
				"		stringValue=\"valueString\",\n" +
5306
				"		enumValue=EnumClass.Value3,\n" +
5307
				"		classValue=X.class,\n" +
5308
				"		annotationValue=@ClassAnnotation(value=\"ClassAnnotation\"),\n" +
5309
				"		booleanArrayValue={\n" +
5310
				"			false,\n" +
5311
				"			true\n" +
5312
				"		},\n" +
5313
				"		charArrayValue={\n" +
5314
				"			\'m\',\n" +
5315
				"			\'q\'\n" +
5316
				"		},\n" +
5317
				"		byteArrayValue={\n" +
5318
				"			-123,\n" +
5319
				"			123\n" +
5320
				"		},\n" +
5321
				"		shortArrayValue={\n" +
5322
				"			-12345,\n" +
5323
				"			12345\n" +
5324
				"		},\n" +
5325
				"		intArrayValue={\n" +
5326
				"			-1234567890,\n" +
5327
				"			1234567890\n" +
5328
				"		},\n" +
5329
				"		floatArrayValue={\n" +
5330
				"			-12345.6789f,\n" +
5331
				"			12345.6789f\n" +
5332
				"		},\n" +
5333
				"		doubleArrayValue={\n" +
5334
				"			-12345.6789,\n" +
5335
				"			12345.6789\n" +
5336
				"		},\n" +
5337
				"		longArrayValue={\n" +
5338
				"			-1234567890123456789l,\n" +
5339
				"			1234567890123456789l\n" +
5340
				"		},\n" +
5341
				"		stringArrayValue={\n" +
5342
				"			\"valueString\",\n" +
5343
				"			\"stringValue\"\n" +
5344
				"		},\n" +
5345
				"		enumArrayValue={\n" +
5346
				"			EnumClass.Value2,\n" +
5347
				"			EnumClass.Value1\n" +
5348
				"		},\n" +
5349
				"		classArrayValue={\n" +
5350
				"			EnumClass.class,\n" +
5351
				"			X.class\n" +
5352
				"		},\n" +
5353
				"		annotationArrayValue={\n" +
5354
				"			@ClassAnnotation(value=\"ClassAnnotation1\"),\n" +
5355
				"			@ClassAnnotation(value=\"ClassAnnotation2\")\n" +
5356
				"		})\n" +
5357
				"	public void method(@ParameterAnnotation(value=\"ParameterAnnotation\") @Deprecated() String param1, @ParameterAnnotation(value=\"ParameterAnnotation\") String param2){\n" +
5358
				"	}\n" +
5359
				"}"
5360
			},
5361
		"");
5362
		
5363
		try {
5364
			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
5365
			final byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
5366
			new ClassFileReader(classFileBytes, "X.java".toCharArray(), true);
5367
			disassembler.disassemble(
5368
					classFileBytes,
5369
					"\n",
5370
					ClassFileBytesDisassembler.DETAILED);			
5371
		} catch (ClassFormatException e) {
5372
			assertTrue("ClassFormatException", false);
5373
		} catch (org.eclipse.jdt.core.util.ClassFormatException e) {
5374
			assertTrue("ClassFormatException", false);
5375
		} catch (IOException e) {
5376
			assertTrue("IOException", false);
5377
		}
5378
	}    
5115
}
5379
}

Return to bug 99375