RFR - JDK-8223780 String::translateEscapes (Preview)
Jim Laskey
james.laskey at oracle.com
Wed May 22 13:23:18 UTC 2019
Thank you. Will integrate your suggested changes.
> On May 21, 2019, at 8:15 PM, Brent Christian <brent.christian at oracle.com> wrote:
>
> Hi, Jim
>
> I have some comments on the CSR and the Webrev.
>
>
> CSR:
> ====
>
> "This method takes the receiver String a replaces escape sequences with character equivalents."
>
> a -> and
>
> --
>
> In the specification, I like emphasizing that nothing happens to 'this', but rather to the returned string, so maybe something like:
>
> "Returns a string with all escape sequences translated into characters represented by..."
>
>
> Webrev:
> =======
>
> src/java.base/share/classes/java/lang/String.java
>
> 3006 case '\'': case '\"': case '\\':
>
> I would find this easier to read with one case per line, so:
>
> case '\'':
> case '\"':
> case '\\':
> break;
>
>
> test/jdk/java/lang/String/TranslateEscapes.java
>
>
> The test should cover octal escapes, and cases that throw IllegalArgumentException.
>
> Why does the test need to run in othervm ?
>
> Thanks,
> -Brent
>
>
> On 5/21/19 12:24 PM, Jim Laskey wrote:
>> Revised at http://cr.openjdk.java.net/~jlaskey/8223780/webrev-03/src/java.base/share/classes/java/lang/String.java.frames.html <http://cr.openjdk.java.net/~jlaskey/8223780/webrev-03/src/java.base/share/classes/java/lang/String.java.frames.html>
>>> On May 21, 2019, at 3:23 PM, Jim Laskey <james.laskey at oracle.com> wrote:
>>>
>>>
>>>
>>>> On May 21, 2019, at 2:57 PM, Ivan Gerasimov <ivan.gerasimov at oracle.com> wrote:
>>>>
>>>> Hi Jim!
>>>>
>>>> A few comments:
>>>>
>>>> 1)
>>>> Probably, there's no need to update ch in these cases:
>>>> case '\'':
>>>> ch = '\'';
>>>> break;
>>>> case '\"':
>>>> ch = '\"';
>>>> break;
>>>
>>> True
>>>
>>>>
>>>> 2)
>>>> Character.digit(ch, 8) will accept non-Latin1 digits.
>>>> So, a sequence \\3\uFF17\uFF17 will be parsed as \\377.
>>>> (Note, that the first digit still can only be from range '0'-'9').
>>>
>>> Also true. Subtlety in UnicodeReader.
>>>
>>>>
>>>> 3)
>>>> It's not obvious how this condition can be triggered:
>>>> if (0377 < code) {
>>>> throw new MalformedEscapeException(from);
>>>> }
>>>> I might be missing something, but I cannot see how 'code' can become > 0377.
>>>
>>> I removed this check in round 2.
>>>
>>>>
>>>> 4)
>>>> throw new MalformedEscapeException(from);
>>>> This will report the next index after the error. Was it intentional?
>>>>
>>>
>>> I switched to using an IllegalArgumentError and displaying the actual character.
>>>
>>>
>>>> With kind regards,
>>>> Ivan
>>>
>>> Much thanks.
>>>
>>>
>>>>
>>>>
>>>> On 5/21/19 7:56 AM, Jim Laskey wrote:
>>>>> Please do a code review of the new String:: translateEscapes instance method. This instance method is being introduced to support JEP-355: Text Blocks, by translating escape sequences in the text block content.
>>>>>
>>>>> Thank you.
>>>>>
>>>>> -- Jim
>>>>>
>>>>> webrev: http://cr.openjdk.java.net/~jlaskey/8223780/webrev-01 <http://cr.openjdk.java.net/~jlaskey/8223780/webrev-01>
>>>>> jbs: https://bugs.openjdk.java.net/browse/JDK-8223780 <https://bugs.openjdk.java.net/browse/JDK-8223780>
>>>>> csr: https://bugs.openjdk.java.net/browse/JDK-8223781 <https://bugs.openjdk.java.net/browse/JDK-8223781>
>>>>> jep: https://bugs.openjdk.java.net/browse/JDK-8222530 <https://bugs.openjdk.java.net/browse/JDK-8222530>
>>>>>
>>>>>
>>>>
>>>> --
>>>> With kind regards,
>>>> Ivan Gerasimov
>>>>
>>>
More information about the core-libs-dev
mailing list