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);