src/share/classes/com/sun/tools/javac/tree/TreeInfo.java

changeset 1734
8dd528992c15
parent 1697
950e8ac120f0
child 1802
8fb68f73d4b1
     1.1 --- a/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Sun May 12 18:18:54 2013 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Fri May 10 15:15:50 2013 +0200
     1.3 @@ -763,14 +763,40 @@
     1.4      }
     1.5  
     1.6      public static Symbol symbolFor(JCTree node) {
     1.7 +        Symbol sym = symbolForImpl(node);
     1.8 +
     1.9 +        return sym != null ? sym.baseSymbol() : null;
    1.10 +    }
    1.11 +
    1.12 +    private static Symbol symbolForImpl(JCTree node) {
    1.13          node = skipParens(node);
    1.14          switch (node.getTag()) {
    1.15 +        case TOPLEVEL:
    1.16 +            return ((JCCompilationUnit) node).packge;
    1.17          case CLASSDEF:
    1.18              return ((JCClassDecl) node).sym;
    1.19          case METHODDEF:
    1.20              return ((JCMethodDecl) node).sym;
    1.21          case VARDEF:
    1.22              return ((JCVariableDecl) node).sym;
    1.23 +        case IDENT:
    1.24 +            return ((JCIdent) node).sym;
    1.25 +        case SELECT:
    1.26 +            return ((JCFieldAccess) node).sym;
    1.27 +        case REFERENCE:
    1.28 +            return ((JCMemberReference) node).sym;
    1.29 +        case NEWCLASS:
    1.30 +            return ((JCNewClass) node).constructor;
    1.31 +        case APPLY:
    1.32 +            return symbolFor(((JCMethodInvocation) node).meth);
    1.33 +        case TYPEAPPLY:
    1.34 +            return symbolFor(((JCTypeApply) node).clazz);
    1.35 +        case ANNOTATION:
    1.36 +        case TYPE_ANNOTATION:
    1.37 +        case TYPEPARAMETER:
    1.38 +            if (node.type != null)
    1.39 +                return node.type.tsym;
    1.40 +            return null;
    1.41          default:
    1.42              return null;
    1.43          }

mercurial