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

changeset 1143
ec59a2ce9114
parent 1142
c896d95e7469
child 1237
568e70bbd9aa
     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); }

mercurial