6715757: javap does not print "extends java.lang.Object"

Tue, 08 Jul 2008 17:14:22 -0700

author
jjg
date
Tue, 08 Jul 2008 17:14:22 -0700
changeset 65
0d4aa3c00af5
parent 64
5e270b126573
child 66
df47f7f4c95a

6715757: javap does not print "extends java.lang.Object"
Reviewed-by: ksrini

src/share/classes/com/sun/tools/classfile/Type.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/javap/ClassWriter.java file | annotate | diff | comparison | revisions
test/tools/javap/4870651/T4870651.java file | annotate | diff | comparison | revisions
test/tools/javap/T4880663.java file | annotate | diff | comparison | revisions
     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.");

mercurial