1.1 --- a/src/share/classes/com/sun/tools/javac/tree/JCTree.java Thu Nov 24 13:36:20 2011 +0000 1.2 +++ b/src/share/classes/com/sun/tools/javac/tree/JCTree.java Thu Nov 24 13:38:40 2011 +0000 1.3 @@ -42,6 +42,7 @@ 1.4 import com.sun.tools.javac.parser.EndPosTable; 1.5 import com.sun.source.tree.*; 1.6 import com.sun.source.tree.LambdaExpressionTree.BodyKind; 1.7 +import com.sun.source.tree.MemberReferenceTree.ReferenceMode; 1.8 1.9 import static com.sun.tools.javac.code.BoundKind.*; 1.10 import static com.sun.tools.javac.tree.JCTree.Tag.*; 1.11 @@ -227,6 +228,10 @@ 1.12 */ 1.13 SELECT, 1.14 1.15 + /** Member references, of type Reference. 1.16 + */ 1.17 + REFERENCE, 1.18 + 1.19 /** Simple identifiers, of type Ident. 1.20 */ 1.21 IDENT, 1.22 @@ -1802,6 +1807,46 @@ 1.23 } 1.24 1.25 /** 1.26 + * Selects a member expression. 1.27 + */ 1.28 + public static class JCMemberReference extends JCExpression implements MemberReferenceTree { 1.29 + public ReferenceMode mode; 1.30 + public Name name; 1.31 + public JCExpression expr; 1.32 + public List<JCExpression> typeargs; 1.33 + public Type targetType; 1.34 + public Symbol sym; 1.35 + 1.36 + protected JCMemberReference(ReferenceMode mode, Name name, JCExpression expr, List<JCExpression> typeargs) { 1.37 + this.mode = mode; 1.38 + this.name = name; 1.39 + this.expr = expr; 1.40 + this.typeargs = typeargs; 1.41 + } 1.42 + @Override 1.43 + public void accept(Visitor v) { v.visitReference(this); } 1.44 + 1.45 + public Kind getKind() { return Kind.MEMBER_REFERENCE; } 1.46 + @Override 1.47 + public ReferenceMode getMode() { return mode; } 1.48 + @Override 1.49 + public JCExpression getQualifierExpression() { return expr; } 1.50 + @Override 1.51 + public Name getName() { return name; } 1.52 + @Override 1.53 + public List<JCExpression> getTypeArguments() { return typeargs; } 1.54 + 1.55 + @Override 1.56 + public <R,D> R accept(TreeVisitor<R,D> v, D d) { 1.57 + return v.visitMemberReference(this, d); 1.58 + } 1.59 + @Override 1.60 + public Tag getTag() { 1.61 + return REFERENCE; 1.62 + } 1.63 + } 1.64 + 1.65 + /** 1.66 * An identifier 1.67 * @param idname the name 1.68 * @param sym the symbol 1.69 @@ -2336,6 +2381,7 @@ 1.70 public void visitTypeTest(JCInstanceOf that) { visitTree(that); } 1.71 public void visitIndexed(JCArrayAccess that) { visitTree(that); } 1.72 public void visitSelect(JCFieldAccess that) { visitTree(that); } 1.73 + public void visitReference(JCMemberReference that) { visitTree(that); } 1.74 public void visitIdent(JCIdent that) { visitTree(that); } 1.75 public void visitLiteral(JCLiteral that) { visitTree(that); } 1.76 public void visitTypeIdent(JCPrimitiveTypeTree that) { visitTree(that); }