# HG changeset patch # User igerasim # Date 1478102019 -10800 # Wed Nov 02 18:53:39 2016 +0300 # Node ID 3428e6ed3906239e7209796d2636bd4edf4b8f4e # Parent 0fa4b5647f3e613bf277e78c18dc7965a5916150 [mq]: 8168921-Inconsistent-Annotation-toString diff --git a/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java b/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java --- a/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java +++ b/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java @@ -253,20 +253,20 @@ } private static String toSourceString(char c) { - StringBuilder sb = new StringBuilder(); - sb.append("'"); + StringBuilder sb = new StringBuilder(4); + sb.append('\''); if (c == '\'') sb.append("\\'"); else sb.append(c); - sb.append("'"); - return sb.toString(); + return sb.append('\'') + .toString(); } private static String toSourceString(long ell) { - return (Math.abs(ell) <= Integer.MAX_VALUE) ? - String.valueOf(ell) : - (String.valueOf(ell) + "L"); + String str = String.valueOf(ell); + return (ell < Integer.MIN_VALUE || ell > Integer.MAX_VALUE) + ? (str + 'L') : str; } /** @@ -278,10 +278,7 @@ sb.append('"'); // Escape embedded quote characters, if present, but don't do // anything more heroic. - if (s.indexOf('"') != -1) { - s = s.replace("\"", "\\\""); - } - sb.append(s); + sb.append(s.replace("\"", "\\\"")); sb.append('"'); return sb.toString(); } diff --git a/test/java/lang/annotation/AnnotationToStringTest.java b/test/java/lang/annotation/AnnotationToStringTest.java --- a/test/java/lang/annotation/AnnotationToStringTest.java +++ b/test/java/lang/annotation/AnnotationToStringTest.java @@ -23,7 +23,7 @@ /* * @test - * @bug 8162817 + * @bug 8162817 8168921 * @summary Test of toString on normal annotations */ @@ -70,6 +70,8 @@ "d1=1.0/0.0, " + "l0=5, " + "l1=9223372036854775807L, " + + "l2=-9223372036854775808L, " + + "l3=-2147483648, " + "s0=\"Hello world.\", " + "s1=\"a\\\"b\", " + "class0=Obj[].class)") @@ -84,6 +86,8 @@ d1=2.0/0.0, l0=5, l1=Long.MAX_VALUE, + l2=Long.MIN_VALUE, + l3=Integer.MIN_VALUE, s0="Hello world.", s1="a\"b", class0=Obj[].class @@ -185,8 +189,10 @@ public int[] f6; @ExpectedString( - "@LongArray(value={-2147483647, 2147483648L, 9223372036854775807L})") - @LongArray(value={-Integer.MAX_VALUE, Integer.MAX_VALUE+1L, Long.MAX_VALUE}) + "@LongArray(value={-9223372036854775808L, -2147483649L, -2147483648," + + " -2147483647, 2147483648L, 9223372036854775807L})") + @LongArray(value={Long.MIN_VALUE, Integer.MIN_VALUE-1L, Integer.MIN_VALUE, + -Integer.MAX_VALUE, Integer.MAX_VALUE+1L, Long.MAX_VALUE}) public long[] f7; @ExpectedString( @@ -287,6 +293,8 @@ double d1(); long l0(); long l1(); + long l2(); + long l3(); String s0(); String s1(); Class class0();