src/share/classes/com/sun/tools/javac/code/Printer.java

changeset 1570
f91144b7da75
parent 1521
71f35e4b93a5
child 1645
97f6839673d6
     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));

mercurial