--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Wed Sep 12 08:46:25 2018 -0700
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Wed Sep 12 14:19:36 2018 -0300
@@ -64,6 +64,10 @@
*/
protected int unicodeConversionBp = -1;
+ /** Control conversion of unicode characters
+ */
+ protected boolean unicodeConversion = true;
+
protected Log log;
protected Names names;
@@ -154,11 +158,17 @@
return new String(sbuf, 0, sp);
}
+ protected boolean setUnicodeConversion(boolean newState) {
+ boolean oldState = unicodeConversion;
+ unicodeConversion = newState;
+ return oldState;
+ }
+
/** Convert unicode escape; bp points to initial '\' character
* (Spec 3.3).
*/
protected void convertUnicode() {
- if (ch == '\\' && unicodeConversionBp != bp) {
+ if (ch == '\\' && unicodeConversion && unicodeConversionBp != bp ) {
bp++; ch = buf[bp];
if (ch == 'u') {
do {
@@ -254,6 +264,24 @@
return buf[bp + 1];
}
+ protected char peekBack() {
+ return buf[bp];
+ }
+
+ /**
+ * Skips consecutive occurrences of the current character, leaving bp positioned
+ * at the last occurrence. Returns the occurrence count.
+ */
+ protected int skipRepeats() {
+ int start = bp;
+ while (bp < buflen) {
+ if (buf[bp] != buf[bp + 1])
+ break;
+ bp++;
+ }
+ return bp - start;
+ }
+
/**
* Returns a copy of the input buffer, up to its inputLength.
* Unicode escape sequences are not translated.