aoqi@0: /* aoqi@0: * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. aoqi@0: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: * aoqi@0: * This code is free software; you can redistribute it and/or modify it aoqi@0: * under the terms of the GNU General Public License version 2 only, as aoqi@0: * published by the Free Software Foundation. aoqi@0: * aoqi@0: * This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: * version 2 for more details (a copy is included in the LICENSE file that aoqi@0: * accompanied this code). aoqi@0: * aoqi@0: * You should have received a copy of the GNU General Public License version aoqi@0: * 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: * aoqi@0: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: * or visit www.oracle.com if you need additional information or have any aoqi@0: * questions. aoqi@0: */ aoqi@0: aoqi@0: /* aoqi@0: * @test aoqi@0: * @bug 6570730 aoqi@0: * @summary com.sun.source.tree.ModifiersTree.getFlags() should return class type aoqi@0: */ aoqi@0: aoqi@0: import java.io.*; aoqi@0: import java.util.*; aoqi@0: import javax.tools.*; aoqi@0: import com.sun.source.tree.*; aoqi@0: import com.sun.source.util.*; aoqi@0: import com.sun.tools.javac.api.*; aoqi@0: aoqi@0: public class ClassTreeTest { aoqi@0: public static void main(String... args) throws Exception { aoqi@0: new ClassTreeTest().run(); aoqi@0: } aoqi@0: aoqi@0: void run() throws Exception { aoqi@0: JavacTool tool = JavacTool.create(); aoqi@0: StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null); aoqi@0: List opts = Collections.emptyList(); aoqi@0: File testSrc = new File(System.getProperty("test.src")); aoqi@0: File thisFile = new File(testSrc, ClassTreeTest.class.getSimpleName() + ".java"); aoqi@0: Iterable fos = fm.getJavaFileObjects(thisFile); aoqi@0: JavacTask task = tool.getTask(null, fm, null, opts, null, fos); aoqi@0: for (CompilationUnitTree cu: task.parse()) { aoqi@0: check(cu, "CLASS", Tree.Kind.CLASS); aoqi@0: check(cu, "INTERFACE", Tree.Kind.INTERFACE); aoqi@0: check(cu, "ENUM", Tree.Kind.ENUM); aoqi@0: check(cu, "ANNOTATION_TYPE", Tree.Kind.ANNOTATION_TYPE); aoqi@0: } aoqi@0: aoqi@0: int expected = 4; aoqi@0: if (checks != expected) aoqi@0: error("Unexpected number of checks performed; expected: " + expected + ", found: " + checks); aoqi@0: aoqi@0: if (errors > 0) aoqi@0: throw new Exception(errors + " errors found"); aoqi@0: } aoqi@0: aoqi@0: void check(CompilationUnitTree cu, String name, Tree.Kind k) { aoqi@0: checks++; aoqi@0: aoqi@0: TreeScanner s = new TreeScanner() { aoqi@0: @Override aoqi@0: public ClassTree visitClass(ClassTree c, String name) { aoqi@0: if (c.getSimpleName().toString().equals(name)) aoqi@0: return c; aoqi@0: else aoqi@0: return super.visitClass(c, name); aoqi@0: } aoqi@0: aoqi@0: @Override aoqi@0: public ClassTree reduce(ClassTree t1, ClassTree t2) { aoqi@0: return (t1 != null ? t1 : t2); aoqi@0: } aoqi@0: }; aoqi@0: aoqi@0: ClassTree c = s.scan(cu, name); aoqi@0: if (c == null) aoqi@0: error("Can't find node named " + name); aoqi@0: else if (c.getKind() != k) aoqi@0: error("Unexpected kind for node named " + name + ": expected: " + k + ", found: " + c.getKind()); aoqi@0: } aoqi@0: aoqi@0: void error(String msg) { aoqi@0: System.err.println("Error: " + msg); aoqi@0: errors++; aoqi@0: } aoqi@0: aoqi@0: int checks; aoqi@0: int errors; aoqi@0: aoqi@0: class CLASS { } aoqi@0: interface INTERFACE { } aoqi@0: enum ENUM { } aoqi@0: @interface ANNOTATION_TYPE { } aoqi@0: }