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

changeset 1969
7de231613e4a
parent 1928
05370ef9dccb
child 2097
ea000904db62
     1.1 --- a/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Tue Aug 20 15:12:16 2013 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Wed Aug 21 16:13:50 2013 -0700
     1.3 @@ -944,10 +944,17 @@
     1.4          try {
     1.5              if (tree.elemtype != null) {
     1.6                  print("new ");
     1.7 -                printTypeAnnotations(tree.annotations);
     1.8                  JCTree elem = tree.elemtype;
     1.9                  printBaseElementType(elem);
    1.10 -                boolean isElemAnnoType = elem instanceof JCAnnotatedType;
    1.11 +
    1.12 +                if (!tree.annotations.isEmpty()) {
    1.13 +                    print(' ');
    1.14 +                    printTypeAnnotations(tree.annotations);
    1.15 +                }
    1.16 +                if (tree.elems != null) {
    1.17 +                    print("[]");
    1.18 +                }
    1.19 +
    1.20                  int i = 0;
    1.21                  List<List<JCAnnotation>> da = tree.dimAnnotations;
    1.22                  for (List<JCExpression> l = tree.dims; l.nonEmpty(); l = l.tail) {
    1.23 @@ -960,17 +967,7 @@
    1.24                      printExpr(l.head);
    1.25                      print("]");
    1.26                  }
    1.27 -                if (tree.elems != null) {
    1.28 -                    if (isElemAnnoType) {
    1.29 -                        print(' ');
    1.30 -                        printTypeAnnotations(((JCAnnotatedType)tree.elemtype).annotations);
    1.31 -                    }
    1.32 -                    print("[]");
    1.33 -                }
    1.34 -                if (isElemAnnoType)
    1.35 -                    elem = ((JCAnnotatedType)elem).underlyingType;
    1.36 -                if (elem instanceof JCArrayTypeTree)
    1.37 -                    printBrackets((JCArrayTypeTree) elem);
    1.38 +                printBrackets(elem);
    1.39              }
    1.40              if (tree.elems != null) {
    1.41                  print("{");
    1.42 @@ -1260,20 +1257,24 @@
    1.43      }
    1.44  
    1.45      // prints the brackets of a nested array in reverse order
    1.46 -    private void printBrackets(JCArrayTypeTree tree) throws IOException {
    1.47 -        JCTree elem;
    1.48 +    // tree is either JCArrayTypeTree or JCAnnotatedTypeTree
    1.49 +    private void printBrackets(JCTree tree) throws IOException {
    1.50 +        JCTree elem = tree;
    1.51          while (true) {
    1.52 -            elem = tree.elemtype;
    1.53              if (elem.hasTag(ANNOTATED_TYPE)) {
    1.54                  JCAnnotatedType atype = (JCAnnotatedType) elem;
    1.55                  elem = atype.underlyingType;
    1.56 -                if (!elem.hasTag(TYPEARRAY)) break;
    1.57 -                print(' ');
    1.58 -                printTypeAnnotations(atype.annotations);
    1.59 +                if (elem.hasTag(TYPEARRAY)) {
    1.60 +                    print(' ');
    1.61 +                    printTypeAnnotations(atype.annotations);
    1.62 +                }
    1.63              }
    1.64 -            print("[]");
    1.65 -            if (!elem.hasTag(TYPEARRAY)) break;
    1.66 -            tree = (JCArrayTypeTree) elem;
    1.67 +            if (elem.hasTag(TYPEARRAY)) {
    1.68 +                print("[]");
    1.69 +                elem = ((JCArrayTypeTree)elem).elemtype;
    1.70 +            } else {
    1.71 +                break;
    1.72 +            }
    1.73          }
    1.74      }
    1.75  
    1.76 @@ -1378,22 +1379,15 @@
    1.77  
    1.78      public void visitAnnotatedType(JCAnnotatedType tree) {
    1.79          try {
    1.80 -            if (tree.underlyingType.getKind() == JCTree.Kind.MEMBER_SELECT) {
    1.81 +            if (tree.underlyingType.hasTag(SELECT)) {
    1.82                  JCFieldAccess access = (JCFieldAccess) tree.underlyingType;
    1.83                  printExpr(access.selected, TreeInfo.postfixPrec);
    1.84                  print(".");
    1.85                  printTypeAnnotations(tree.annotations);
    1.86                  print(access.name);
    1.87 -            } else if (tree.underlyingType.getKind() == JCTree.Kind.ARRAY_TYPE) {
    1.88 -                JCArrayTypeTree array = (JCArrayTypeTree) tree.underlyingType;
    1.89 +            } else if (tree.underlyingType.hasTag(TYPEARRAY)) {
    1.90                  printBaseElementType(tree);
    1.91 -                print(' ');
    1.92 -                printTypeAnnotations(tree.annotations);
    1.93 -                print("[]");
    1.94 -                JCExpression elem = array.elemtype;
    1.95 -                if (elem.hasTag(TYPEARRAY)) {
    1.96 -                    printBrackets((JCArrayTypeTree) elem);
    1.97 -                }
    1.98 +                printBrackets(tree);
    1.99              } else {
   1.100                  printTypeAnnotations(tree.annotations);
   1.101                  printExpr(tree.underlyingType);

mercurial