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 }