Tue, 08 Jul 2008 17:14:22 -0700
6715757: javap does not print "extends java.lang.Object"
Reviewed-by: ksrini
1.1 --- a/src/share/classes/com/sun/tools/classfile/Type.java Tue Jul 08 16:59:27 2008 -0700 1.2 +++ b/src/share/classes/com/sun/tools/classfile/Type.java Tue Jul 08 17:14:22 2008 -0700 1.3 @@ -36,10 +36,6 @@ 1.4 public class Type { 1.5 protected Type() { } 1.6 1.7 - public boolean isObject() { 1.8 - return false; 1.9 - } 1.10 - 1.11 protected static void append(StringBuilder sb, String prefix, List<? extends Type> types, String suffix) { 1.12 sb.append(prefix); 1.13 String sep = ""; 1.14 @@ -66,11 +62,6 @@ 1.15 return name; 1.16 } 1.17 1.18 - @Override 1.19 - public boolean isObject() { 1.20 - return name.equals("java.lang.Object"); 1.21 - } 1.22 - 1.23 public final String name; 1.24 } 1.25 1.26 @@ -129,7 +120,7 @@ 1.27 public String toString() { 1.28 StringBuilder sb = new StringBuilder(); 1.29 appendIfNotEmpty(sb, "<", typeArgTypes, ">"); 1.30 - if (superclassType != null && !superclassType.isObject()) { 1.31 + if (superclassType != null) { 1.32 sb.append(" extends "); 1.33 sb.append(superclassType); 1.34 } 1.35 @@ -188,7 +179,7 @@ 1.36 StringBuilder sb = new StringBuilder(); 1.37 sb.append(name); 1.38 String sep = " extends "; 1.39 - if (classBound != null && !classBound.isObject()) { 1.40 + if (classBound != null) { 1.41 sb.append(sep); 1.42 sb.append(classBound); 1.43 sep = " & ";
2.1 --- a/src/share/classes/com/sun/tools/javap/ClassWriter.java Tue Jul 08 16:59:27 2008 -0700 2.2 +++ b/src/share/classes/com/sun/tools/javap/ClassWriter.java Tue Jul 08 17:14:22 2008 -0700 2.3 @@ -104,14 +104,10 @@ 2.4 Signature_attribute sigAttr = getSignature(cf.attributes); 2.5 if (sigAttr == null) { 2.6 // use info from class file header 2.7 - if (classFile.isClass()) { 2.8 - if (classFile.super_class != 0 ) { 2.9 - String sn = getJavaSuperclassName(cf); 2.10 - if (!sn.equals("java.lang.Object") || options.compat) { // BUG XXXXXXXX 2.11 - print(" extends "); 2.12 - print(sn); 2.13 - } 2.14 - } 2.15 + if (classFile.isClass() && classFile.super_class != 0 ) { 2.16 + String sn = getJavaSuperclassName(cf); 2.17 + print(" extends "); 2.18 + print(sn); 2.19 } 2.20 for (int i = 0; i < classFile.interfaces.length; i++) { 2.21 print(i == 0 ? (classFile.isClass() ? " implements " : " extends ") : ","); 2.22 @@ -124,7 +120,7 @@ 2.23 // FieldType and a ClassSignatureType that only contains a superclass type. 2.24 if (t instanceof Type.ClassSigType) 2.25 print(t); 2.26 - else if (!t.isObject()) { 2.27 + else { 2.28 print(" extends "); 2.29 print(t); 2.30 }
3.1 --- a/test/tools/javap/4870651/T4870651.java Tue Jul 08 16:59:27 2008 -0700 3.2 +++ b/test/tools/javap/4870651/T4870651.java Tue Jul 08 17:14:22 2008 -0700 3.3 @@ -23,8 +23,9 @@ 3.4 3.5 /* 3.6 * @test 3.7 - * @bug 4870651 3.8 - * @summary javap should recognize generics, varargs, enum 3.9 + * @bug 4870651 6715757 3.10 + * @summary javap should recognize generics, varargs, enum; 3.11 + * javap prints "extends java.lang.Object" 3.12 * @build T4870651 Test 3.13 * @run main T4870651 3.14 */ 3.15 @@ -38,7 +39,9 @@ 3.16 3.17 public void run() throws IOException { 3.18 verify("Test", 3.19 - "class Test<T, E extends java.lang.Exception & java.lang.Comparable<T>, U extends java.lang.Comparable>", 3.20 + "class Test<T extends java.lang.Object, " + 3.21 + "E extends java.lang.Exception & java.lang.Comparable<T>, " + 3.22 + "U extends java.lang.Comparable>", 3.23 "v1(java.lang.String...)"); 3.24 3.25 verify("Test$Enum",
4.1 --- a/test/tools/javap/T4880663.java Tue Jul 08 16:59:27 2008 -0700 4.2 +++ b/test/tools/javap/T4880663.java Tue Jul 08 17:14:22 2008 -0700 4.3 @@ -23,8 +23,9 @@ 4.4 4.5 /* 4.6 * @test 4.7 - * @bug 4880663 4.8 + * @bug 4880663 6715757 4.9 * @summary javap could output whitespace between class name and opening brace 4.10 + * javap prints "extends java.lang.Object" 4.11 */ 4.12 4.13 4.14 @@ -38,7 +39,7 @@ 4.15 public void run() throws IOException { 4.16 File javaFile = writeTestFile(); 4.17 File classFile = compileTestFile(javaFile); 4.18 - verify(classFile, "class Test {"); 4.19 + verify(classFile, "class Test extends java.lang.Object {"); 4.20 4.21 if (errors > 0) 4.22 throw new Error(errors + " found.");