Tue, 24 Dec 2013 09:17:37 -0800
8029230: Update copyright year to match last edit in jdk8 langtools repository for 2013
Reviewed-by: ksrini
Contributed-by: steve.sides@oracle.com
1 /*
2 * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
24 import static com.sun.tools.classfile.TypeAnnotation.TargetType.*;
26 /*
27 * @test
28 * @summary Test population of reference info for method exception clauses
29 * @compile -g Driver.java ReferenceInfoUtil.java MethodThrows.java
30 * @run main Driver MethodThrows
31 */
32 public class MethodThrows {
34 @TADescriptions({
35 @TADescription(annotation = "TA", type = THROWS, typeIndex = 0),
36 @TADescription(annotation = "TB", type = THROWS, typeIndex = 2)
37 })
38 public String regularMethod() {
39 return "class Test { void test() throws @TA RuntimeException, IllegalArgumentException, @TB Exception { } }";
40 }
42 @TADescriptions({
43 @TADescription(annotation = "TA", type = THROWS, typeIndex = 0),
44 @TADescription(annotation = "TB", type = THROWS, typeIndex = 2)
45 })
46 public String abstractMethod() {
47 return "abstract class Test { abstract void test() throws @TA RuntimeException, IllegalArgumentException, @TB Exception; }";
48 }
50 @TADescriptions({
51 @TADescription(annotation = "TA", type = THROWS, typeIndex = 0),
52 @TADescription(annotation = "TB", type = THROWS, typeIndex = 2)
53 })
54 public String interfaceMethod() {
55 return "interface Test { void test() throws @TA RuntimeException, IllegalArgumentException, @TB Exception; }";
56 }
58 @TADescriptions({
59 @TADescription(annotation = "TA", type = THROWS, typeIndex = 0,
60 genericLocation = {}),
61 @TADescription(annotation = "TB", type = THROWS, typeIndex = 0,
62 genericLocation = {1, 0}),
63 @TADescription(annotation = "TC", type = THROWS, typeIndex = 0,
64 genericLocation = {1, 0, 1, 0}),
65 @TADescription(annotation = "TD", type = THROWS, typeIndex = 1,
66 genericLocation = {}),
67 @TADescription(annotation = "TE", type = THROWS, typeIndex = 1,
68 genericLocation = {1, 0}),
69 @TADescription(annotation = "TF", type = THROWS, typeIndex = 1,
70 genericLocation = {1, 0, 1, 0})
71 })
72 public String NestedTypes() {
73 return "class Outer { class Middle { class Inner1 extends Exception {}" +
74 " class Inner2 extends Exception{} } }" +
75 "class Test { void test() throws @TA Outer.@TB Middle.@TC Inner1, @TD Outer.@TE Middle.@TF Inner2 { } }";
76 }
77 }