RFR: JDK-8227640: javac crashes on text blocks with invalid escapes.
Jan Lahoda
jan.lahoda at oracle.com
Mon Jul 15 19:00:06 UTC 2019
On 15. 07. 19 18:29, Jim Laskey wrote:
> Actually, one problem, should break from the token loop when the error is encountered, otherwise it's a change in behaviour.
Sorry, I am not sure I follow - if there are multiple illegal escapes in
the literal, javac used to produce an error for each of them:
(JDK 8):
---
$ javac IllegalEscapes.java
IllegalEscapes.java:2: error: illegal escape character
private static final String s1 = "\!\!\!";
^
IllegalEscapes.java:2: error: illegal escape character
private static final String s1 = "\!\!\!";
^
IllegalEscapes.java:2: error: illegal escape character
private static final String s1 = "\!\!\!";
^
3 errors
---
With this patch, it does the same:
---
$ javac IllegalEscapes.java
IllegalEscapes.java:2: error: illegal escape character
private static final String s1 = "\!\!\!";
^
IllegalEscapes.java:2: error: illegal escape character
private static final String s1 = "\!\!\!";
^
IllegalEscapes.java:2: error: illegal escape character
private static final String s1 = "\!\!\!";
^
3 errors
---
This is because the conversion is happening after the literal is fully
scanned.
Thanks,
Jan
IllegalEscapes.java:
---
public class IllegalEscapes {
private static final String s1 = "\!\!\!";
}
---
>
>
>> On Jul 15, 2019, at 1:05 PM, Jan Lahoda <jan.lahoda at oracle.com> wrote:
>>
>> Hi,
>>
>> When a text block contains an invalid escape sequence, there is an internal IllegalArgumentException thrown from String.translateEscapes invoked from javac. While this is concealed by javac, there are still ways to see the effects of the exception. So, I'd like to propose avoid calling String.translateEscapes when there are invalid escape sequences (errors for these invalid sequences are already reported).
>>
>> JBS: https://bugs.openjdk.java.net/browse/JDK-8227640
>> Webrev: http://cr.openjdk.java.net/~jlahoda/8227640/webrev.00/
>>
>> How does this look?
>>
>> Thanks,
>> Jan
>
More information about the compiler-dev
mailing list