20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.jshell; 27 28 import static com.sun.tools.javac.code.Flags.COMPOUND; 29 import static com.sun.tools.javac.code.Kinds.Kind.PCK; 30 import com.sun.tools.javac.code.Printer; 31 import com.sun.tools.javac.code.Symbol; 32 import com.sun.tools.javac.code.Symbol.ClassSymbol; 33 import com.sun.tools.javac.code.Symbol.PackageSymbol; 34 import com.sun.tools.javac.code.Type; 35 import com.sun.tools.javac.code.Type.ClassType; 36 import com.sun.tools.javac.util.JavacMessages; 37 import java.util.Locale; 38 import java.util.function.BinaryOperator; 39 40 /** 41 * Print types in source form. 42 */ 43 class TypePrinter extends Printer { 44 private static final String OBJECT = "Object"; 45 46 private final JavacMessages messages; 47 private final BinaryOperator<String> fullClassNameAndPackageToClass; 48 private boolean useWildCard = false; 49 50 TypePrinter(JavacMessages messages, BinaryOperator<String> fullClassNameAndPackageToClass, Type typeToPrint) { 51 this.messages = messages; 52 this.fullClassNameAndPackageToClass = fullClassNameAndPackageToClass; 53 } 54 55 @Override 56 protected String localize(Locale locale, String key, Object... args) { 57 return messages.getLocalizedString(locale, key, args); 58 } 59 60 @Override 61 protected String capturedVarId(Type.CapturedType t, Locale locale) { 62 throw new InternalError("should never call this"); 63 } 64 65 @Override | 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.jshell; 27 28 import static com.sun.tools.javac.code.Flags.COMPOUND; 29 import static com.sun.tools.javac.code.Kinds.Kind.PCK; 30 import com.sun.tools.javac.code.Printer; 31 import com.sun.tools.javac.code.Symbol; 32 import com.sun.tools.javac.code.Symbol.ClassSymbol; 33 import com.sun.tools.javac.code.Symbol.PackageSymbol; 34 import com.sun.tools.javac.code.Type; 35 import com.sun.tools.javac.code.Type.ClassType; 36 import com.sun.tools.javac.util.JavacMessages; 37 import java.util.Locale; 38 import java.util.function.BinaryOperator; 39 40 import javax.lang.model.type.TypeMirror; 41 import jdk.jshell.TaskFactory.AnalyzeTask; 42 43 /** 44 * Print types in source form. 45 */ 46 class TypePrinter extends Printer { 47 private static final String OBJECT = "Object"; 48 49 public static String printType(AnalyzeTask at, JShell state, TypeMirror type) { 50 Type typeImpl = (Type) type; 51 TypePrinter tp = new TypePrinter(at.messages(), state.maps::fullClassNameAndPackageToClass, typeImpl); 52 return tp.visit(typeImpl, Locale.getDefault()); 53 } 54 55 private final JavacMessages messages; 56 private final BinaryOperator<String> fullClassNameAndPackageToClass; 57 private boolean useWildCard = false; 58 59 TypePrinter(JavacMessages messages, BinaryOperator<String> fullClassNameAndPackageToClass, Type typeToPrint) { 60 this.messages = messages; 61 this.fullClassNameAndPackageToClass = fullClassNameAndPackageToClass; 62 } 63 64 @Override 65 protected String localize(Locale locale, String key, Object... args) { 66 return messages.getLocalizedString(locale, key, args); 67 } 68 69 @Override 70 protected String capturedVarId(Type.CapturedType t, Locale locale) { 71 throw new InternalError("should never call this"); 72 } 73 74 @Override |