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

changeset 1374
c002fdee76fd
parent 1358
fc123bdeddb8
child 1435
9b26c96f5138
     1.1 --- a/src/share/classes/com/sun/tools/javac/tree/JCTree.java	Tue Oct 23 13:58:56 2012 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/tree/JCTree.java	Thu Oct 25 11:09:36 2012 -0700
     1.3 @@ -81,7 +81,7 @@
     1.4  public abstract class JCTree implements Tree, Cloneable, DiagnosticPosition {
     1.5  
     1.6      /* Tree tag values, identifying kinds of trees */
     1.7 -    public enum Tag{
     1.8 +    public enum Tag {
     1.9          /** For methods that return an invalid tag if a given condition is not met
    1.10           */
    1.11          NO_TAG,
    1.12 @@ -1912,10 +1912,10 @@
    1.13       * A constant value given literally.
    1.14       */
    1.15      public static class JCLiteral extends JCExpression implements LiteralTree {
    1.16 -        public int typetag;
    1.17 +        public TypeTag typetag;
    1.18          /** value representation */
    1.19          public Object value;
    1.20 -        protected JCLiteral(int typetag, Object value) {
    1.21 +        protected JCLiteral(TypeTag typetag, Object value) {
    1.22              this.typetag = typetag;
    1.23              this.value = value;
    1.24          }
    1.25 @@ -1923,33 +1923,15 @@
    1.26          public void accept(Visitor v) { v.visitLiteral(this); }
    1.27  
    1.28          public Kind getKind() {
    1.29 -            switch (typetag) {
    1.30 -            case TypeTags.INT:
    1.31 -                return Kind.INT_LITERAL;
    1.32 -            case TypeTags.LONG:
    1.33 -                return Kind.LONG_LITERAL;
    1.34 -            case TypeTags.FLOAT:
    1.35 -                return Kind.FLOAT_LITERAL;
    1.36 -            case TypeTags.DOUBLE:
    1.37 -                return Kind.DOUBLE_LITERAL;
    1.38 -            case TypeTags.BOOLEAN:
    1.39 -                return Kind.BOOLEAN_LITERAL;
    1.40 -            case TypeTags.CHAR:
    1.41 -                return Kind.CHAR_LITERAL;
    1.42 -            case TypeTags.CLASS:
    1.43 -                return Kind.STRING_LITERAL;
    1.44 -            case TypeTags.BOT:
    1.45 -                return Kind.NULL_LITERAL;
    1.46 -            default:
    1.47 -                throw new AssertionError("unknown literal kind " + this);
    1.48 -            }
    1.49 +            return typetag.getKindLiteral();
    1.50          }
    1.51 +
    1.52          public Object getValue() {
    1.53              switch (typetag) {
    1.54 -                case TypeTags.BOOLEAN:
    1.55 +                case BOOLEAN:
    1.56                      int bi = (Integer) value;
    1.57                      return (bi != 0);
    1.58 -                case TypeTags.CHAR:
    1.59 +                case CHAR:
    1.60                      int ci = (Integer) value;
    1.61                      char c = (char) ci;
    1.62                      if (c != ci)
    1.63 @@ -1976,12 +1958,12 @@
    1.64  
    1.65      /**
    1.66       * Identifies a basic type.
    1.67 -     * @see TypeTags
    1.68 +     * @see TypeTag
    1.69       */
    1.70      public static class JCPrimitiveTypeTree extends JCExpression implements PrimitiveTypeTree {
    1.71          /** the basic type id */
    1.72 -        public int typetag;
    1.73 -        protected JCPrimitiveTypeTree(int typetag) {
    1.74 +        public TypeTag typetag;
    1.75 +        protected JCPrimitiveTypeTree(TypeTag typetag) {
    1.76              this.typetag = typetag;
    1.77          }
    1.78          @Override
    1.79 @@ -1989,29 +1971,9 @@
    1.80  
    1.81          public Kind getKind() { return Kind.PRIMITIVE_TYPE; }
    1.82          public TypeKind getPrimitiveTypeKind() {
    1.83 -            switch (typetag) {
    1.84 -            case TypeTags.BOOLEAN:
    1.85 -                return TypeKind.BOOLEAN;
    1.86 -            case TypeTags.BYTE:
    1.87 -                return TypeKind.BYTE;
    1.88 -            case TypeTags.SHORT:
    1.89 -                return TypeKind.SHORT;
    1.90 -            case TypeTags.INT:
    1.91 -                return TypeKind.INT;
    1.92 -            case TypeTags.LONG:
    1.93 -                return TypeKind.LONG;
    1.94 -            case TypeTags.CHAR:
    1.95 -                return TypeKind.CHAR;
    1.96 -            case TypeTags.FLOAT:
    1.97 -                return TypeKind.FLOAT;
    1.98 -            case TypeTags.DOUBLE:
    1.99 -                return TypeKind.DOUBLE;
   1.100 -            case TypeTags.VOID:
   1.101 -                return TypeKind.VOID;
   1.102 -            default:
   1.103 -                throw new AssertionError("unknown primitive type " + this);
   1.104 -            }
   1.105 +            return typetag.getPrimitiveTypeKind();
   1.106          }
   1.107 +
   1.108          @Override
   1.109          public <R,D> R accept(TreeVisitor<R,D> v, D d) {
   1.110              return v.visitPrimitiveType(this, d);
   1.111 @@ -2161,7 +2123,7 @@
   1.112          }
   1.113          @Override
   1.114          public Tag getTag() {
   1.115 -            return WILDCARD;
   1.116 +            return Tag.WILDCARD;
   1.117          }
   1.118      }
   1.119  
   1.120 @@ -2362,8 +2324,8 @@
   1.121          JCArrayAccess Indexed(JCExpression indexed, JCExpression index);
   1.122          JCFieldAccess Select(JCExpression selected, Name selector);
   1.123          JCIdent Ident(Name idname);
   1.124 -        JCLiteral Literal(int tag, Object value);
   1.125 -        JCPrimitiveTypeTree TypeIdent(int typetag);
   1.126 +        JCLiteral Literal(TypeTag tag, Object value);
   1.127 +        JCPrimitiveTypeTree TypeIdent(TypeTag typetag);
   1.128          JCArrayTypeTree TypeArray(JCExpression elemtype);
   1.129          JCTypeApply TypeApply(JCExpression clazz, List<JCExpression> arguments);
   1.130          JCTypeParameter TypeParameter(Name name, List<JCExpression> bounds);

mercurial