diff -r 3a9f319be48a -r b4e7a57af8df test/tools/javac/tree/TreeKindTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/tree/TreeKindTest.java Fri Aug 27 17:21:17 2010 -0700 @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6341023 + * @summary Tree API: Tree.Kind should have mapping to interface + */ + +import com.sun.source.tree.*; + +public class TreeKindTest{ + public static void main(String... args) { + boolean ok = true; + + for (Tree.Kind k: Tree.Kind.values()) { + //System.err.println(k + " " + k.asInterface()); + Class i = k.asInterface(); + switch (k) { + case POSTFIX_INCREMENT: + case POSTFIX_DECREMENT: + case PREFIX_INCREMENT: + case PREFIX_DECREMENT: + case UNARY_PLUS: + case UNARY_MINUS: + case BITWISE_COMPLEMENT: + case LOGICAL_COMPLEMENT: + ok = ok & verify(k, i, i == UnaryTree.class); + break; + + case MULTIPLY: + case DIVIDE: + case REMAINDER: + case PLUS: + case MINUS: + case LEFT_SHIFT: + case RIGHT_SHIFT: + case UNSIGNED_RIGHT_SHIFT: + case LESS_THAN: + case GREATER_THAN: + case LESS_THAN_EQUAL: + case GREATER_THAN_EQUAL: + case EQUAL_TO: + case NOT_EQUAL_TO: + case AND: + case XOR: + case OR: + case CONDITIONAL_AND: + case CONDITIONAL_OR: + ok = ok & verify(k, i, i == BinaryTree.class); + break; + + case MULTIPLY_ASSIGNMENT: + case DIVIDE_ASSIGNMENT: + case REMAINDER_ASSIGNMENT: + case PLUS_ASSIGNMENT: + case MINUS_ASSIGNMENT: + case LEFT_SHIFT_ASSIGNMENT: + case RIGHT_SHIFT_ASSIGNMENT: + case UNSIGNED_RIGHT_SHIFT_ASSIGNMENT: + case AND_ASSIGNMENT: + case XOR_ASSIGNMENT: + case OR_ASSIGNMENT: + ok = ok & verify(k, i, i == CompoundAssignmentTree.class); + break; + + case INT_LITERAL: + case LONG_LITERAL: + case FLOAT_LITERAL: + case DOUBLE_LITERAL: + case BOOLEAN_LITERAL: + case CHAR_LITERAL: + case STRING_LITERAL: + case NULL_LITERAL: + ok = ok & verify(k, i, i == LiteralTree.class); + break; + + case UNBOUNDED_WILDCARD: + case EXTENDS_WILDCARD: + case SUPER_WILDCARD: + ok = ok & verify(k, i, i == WildcardTree.class); + break; + + case INTERFACE: + case ANNOTATION_TYPE: + case ENUM: + case CLASS: + ok = ok & verify(k, i, i == ClassTree.class); + break; + + case OTHER: + ok = ok & verify(k, i, i == null); + break; + + default: + String ks = k.toString().replace("_", "") + "tree"; + String iName = i.getName(); + String is = iName.substring(iName.lastIndexOf(".") + 1); + ok = ok & verify(k, i, ks.equalsIgnoreCase(is)); + } + } + + if (!ok) + throw new AssertionError("test failed"); + } + + static boolean verify(Tree.Kind k, Class c, boolean b) { + if (!b) + System.err.println("error: " + k + " " + c); + return b; + } +}