jdk
1/*
2* Copyright (c) 2006, 2015, 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*/
23
24/*
25* @test
26* @bug 6402516
27* @summary need Trees.getScope(TreePath)
28* @modules jdk.compiler/com.sun.tools.javac.api
29* jdk.compiler/com.sun.tools.javac.comp
30* jdk.compiler/com.sun.tools.javac.file
31* jdk.compiler/com.sun.tools.javac.tree
32* jdk.compiler/com.sun.tools.javac.util
33* @build Checker CheckClass
34* @run main CheckClass
35*/
36
37import java.util.*;38import com.sun.source.tree.*;39import javax.lang.model.element.*;40import javax.lang.model.util.*;41
42/*
43* Check the enclosing class of a scope against the contents of string literals.
44*/
45public class CheckClass extends Checker {46public static void main(String... args) throws Exception {47Checker chk = new CheckClass();48chk.check("TestClass.java");49}50
51@Override52protected boolean checkLocal(Scope s, String ref) {53//System.err.println("checkLocal: " + s + " " + ref + " " + s.getEnclosingClass());54TypeElement te = s.getEnclosingClass();55boolean ok;56if (te == null)57ok = ref.equals("0");58else {59CharSequence name = te.getQualifiedName();60ok = ref.equals(name == null || name.length() == 0 ? "-" : name.toString());61}62if (!ok)63error(s, ref, "bad enclosing class found: " + te);64return ok;65}66}
67