1.1 --- a/src/share/classes/com/sun/tools/javac/code/Printer.java Mon Jan 21 01:27:42 2013 -0500 1.2 +++ b/src/share/classes/com/sun/tools/javac/code/Printer.java Mon Feb 04 18:08:53 2013 -0500 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -27,7 +27,10 @@ 1.11 1.12 import java.util.Locale; 1.13 1.14 +import javax.lang.model.type.TypeKind; 1.15 + 1.16 import com.sun.tools.javac.api.Messages; 1.17 +import com.sun.tools.javac.code.Type.AnnotatedType; 1.18 import com.sun.tools.javac.code.Symbol.*; 1.19 import com.sun.tools.javac.code.Type.*; 1.20 import com.sun.tools.javac.util.List; 1.21 @@ -35,7 +38,6 @@ 1.22 1.23 import static com.sun.tools.javac.code.BoundKind.*; 1.24 import static com.sun.tools.javac.code.Flags.*; 1.25 -import static com.sun.tools.javac.code.TypeTag.ARRAY; 1.26 import static com.sun.tools.javac.code.TypeTag.CLASS; 1.27 import static com.sun.tools.javac.code.TypeTag.FORALL; 1.28 1.29 @@ -188,7 +190,7 @@ 1.30 StringBuilder buf = new StringBuilder(); 1.31 if (t.getEnclosingType().tag == CLASS && t.tsym.owner.kind == Kinds.TYP) { 1.32 buf.append(visit(t.getEnclosingType(), locale)); 1.33 - buf.append("."); 1.34 + buf.append('.'); 1.35 buf.append(className(t, false, locale)); 1.36 } else { 1.37 buf.append(className(t, true, locale)); 1.38 @@ -196,7 +198,7 @@ 1.39 if (t.getTypeArguments().nonEmpty()) { 1.40 buf.append('<'); 1.41 buf.append(visitTypes(t.getTypeArguments(), locale)); 1.42 - buf.append(">"); 1.43 + buf.append('>'); 1.44 } 1.45 return buf.toString(); 1.46 } 1.47 @@ -231,6 +233,17 @@ 1.48 return visitType(t, locale); 1.49 } 1.50 1.51 + @Override 1.52 + public String visitAnnotatedType(AnnotatedType t, Locale locale) { 1.53 + if (t.typeAnnotations != null && 1.54 + t.typeAnnotations.nonEmpty()) { 1.55 + // TODO: better logic for arrays, ... 1.56 + return "(" + t.typeAnnotations + " :: " + visit(t.underlyingType, locale) + ")"; 1.57 + } else { 1.58 + return "({} :: " + visit(t.underlyingType, locale) + ")"; 1.59 + } 1.60 + } 1.61 + 1.62 public String visitType(Type t, Locale locale) { 1.63 String s = (t.tsym == null || t.tsym.name == null) 1.64 ? localize(locale, "compiler.misc.type.none") 1.65 @@ -296,8 +309,13 @@ 1.66 args = args.tail; 1.67 buf.append(','); 1.68 } 1.69 - if (args.head.tag == ARRAY) { 1.70 - buf.append(visit(((ArrayType) args.head).elemtype, locale)); 1.71 + if (args.head.unannotatedType().getKind() == TypeKind.ARRAY) { 1.72 + buf.append(visit(((ArrayType) args.head.unannotatedType()).elemtype, locale)); 1.73 + if (args.head.getAnnotations().nonEmpty()) { 1.74 + buf.append(' '); 1.75 + buf.append(args.head.getAnnotations()); 1.76 + buf.append(' '); 1.77 + } 1.78 buf.append("..."); 1.79 } else { 1.80 buf.append(visit(args.head, locale));