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 |
} |