JDK 13 RFR of JDK-8164819: Make javac's toString() on annotation objects consistent with core reflection

Joe Darcy joe.darcy at oracle.com
Tue Jun 4 16:46:57 UTC 2019


Thanks Jon.

FYI, updated webrev at

     http://cr.openjdk.java.net/~darcy/8164819.3/

Diff of patches below. Typo in the AnnotationInvocationHandler.java 
variable name corrected, ElementStructureTest test update courtesy Jan, 
and small update to the HotSpot test ConstMethodTest.java to accommodate 
the changed format.

Thanks,

-Joe

 > --- 
old/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java 
2019-06-04 09:26:16.824947998 -0700
 > +++ 
new/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java 
2019-06-04 09:26:16.497112000 -0700
45,46c45,55
< @@ -228,7 +236,7 @@
<              arrayBackets.append("[]");
---
 > @@ -221,14 +229,14 @@
 >       */
 >      private static String toSourceString(Class<?> clazz) {
 >          Class<?> finalComponent = clazz;
 > -        StringBuilder arrayBackets = new StringBuilder();
 > +        StringBuilder arrayBrackets = new StringBuilder();
 >
 >          while(finalComponent.isArray()) {
 >              finalComponent = finalComponent.getComponentType();
 > -            arrayBackets.append("[]");
 > +            arrayBrackets.append("[]");
50c59
< +        return finalComponent.getName() + arrayBackets.toString() + 
".class";
---
 > +        return finalComponent.getName() + arrayBrackets.toString() + 
".class";


< --- old/test/langtools/tools/javac/sym/ElementStructureTest.java 
2019-06-03 13:45:14.639762024 -0700
< +++ new/test/langtools/tools/javac/sym/ElementStructureTest.java 
2019-06-03 13:45:14.319922012 -0700
< @@ -23,6 +23,7 @@
<
<  /**
<   * @test
< + * @ignore
<   * @bug 8072480 8203814
<   * @summary Check the platform classpath contains the correct elements.
<   * @library /tools/lib
---
 > --- old/test/langtools/tools/javac/sym/ElementStructureTest.java 
2019-06-04 09:26:37.002853999 -0700
 > +++ new/test/langtools/tools/javac/sym/ElementStructureTest.java 
2019-06-04 09:26:36.683013999 -0700
 > @@ -1,5 +1,5 @@
 >  /*
 > - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All 
rights reserved.
 > + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All 
rights reserved.
 >   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 >   *
 >   * This code is free software; you can redistribute it and/or modify it
 > @@ -128,16 +128,16 @@
 >          (byte) 0xB7, (byte) 0x52, (byte) 0x0F, (byte) 0x68
 >      };
 >      static final byte[] hash7 = new byte[] {
 > -        (byte) 0x6B, (byte) 0xA2, (byte) 0xE9, (byte) 0x8E,
 > -        (byte) 0xE1, (byte) 0x8E, (byte) 0x60, (byte) 0xBE,
 > -        (byte) 0x54, (byte) 0xC4, (byte) 0x33, (byte) 0x3E,
 > -        (byte) 0x0C, (byte) 0x2D, (byte) 0x3A, (byte) 0x7C
 > + (byte) 0x3C, (byte) 0x03, (byte) 0xEA, (byte) 0x4A,
 > + (byte) 0x62, (byte) 0xD2, (byte) 0x18, (byte) 0xE5,
 > + (byte) 0xA5, (byte) 0xC2, (byte) 0xB7, (byte) 0x85,
 > + (byte) 0x90, (byte) 0xFA, (byte) 0x98, (byte) 0xCD
 >      };
 >      static final byte[] hash8 = new byte[] {
 > -        (byte) 0x44, (byte) 0x77, (byte) 0x6E, (byte) 0x52,
 > -        (byte) 0x2B, (byte) 0x16, (byte) 0xD3, (byte) 0x3C,
 > -        (byte) 0x78, (byte) 0x75, (byte) 0xF5, (byte) 0x0A,
 > -        (byte) 0x01, (byte) 0x24, (byte) 0xBD, (byte) 0x2A
 > + (byte) 0x0B, (byte) 0xEB, (byte) 0x16, (byte) 0xF5,
 > + (byte) 0x7F, (byte) 0xB0, (byte) 0x18, (byte) 0xF1,
 > + (byte) 0x78, (byte) 0x11, (byte) 0xED, (byte) 0x30,
 > + (byte) 0x19, (byte) 0x4D, (byte) 0xDE, (byte) 0x8A
 >      };
 >
 >      final static Map<String, byte[]> version2Hash = new HashMap<>();

 > --- old/test/hotspot/jtreg/runtime/8007320/ConstMethodTest.java 
2019-06-04 09:26:37.562573999 -0700
 > +++ new/test/hotspot/jtreg/runtime/8007320/ConstMethodTest.java 
2019-06-04 09:26:37.242733999 -0700
 > @@ -1,5 +1,5 @@
 >  /*
 > - * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All 
rights reserved.
 > + * Copyright (c) 2013, 2019, Oracle and/or its affiliates. All 
rights reserved.
 >   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 >   *
 >   * This code is free software; you can redistribute it and/or modify it
 > @@ -122,8 +122,8 @@
 >                  equal(ann.length, 3);
 >                  Annotation foo = ann[0][0];
 >                  Annotation bar = ann[1][0];
 > -                equal(foo.toString(), "@Named(value=\"aName\")");
 > -                equal(bar.toString(), "@Named(value=\"bName\")");
 > +                equal(foo.toString(), "@Named(\"aName\")");
 > +                equal(bar.toString(), "@Named(\"bName\")");
 >                  check(foo.equals(foo));
 >                  check(bar.equals(bar));
 >                  check(! foo.equals(bar));

On 6/3/2019 4:01 PM, Jonathan Gibbons wrote:
>
> OK, but with a typo to be fixed in the first file (ArrayBackets)
>
> "It would be nice" if we could share the test cases in the new 
> AnnotationToStringTest with an equivalent test for javadoc, but I 
> can't think of a clean way to do that (so far).
>
> -- Jon
>


More information about the compiler-dev mailing list