1.1 --- a/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Tue Nov 27 13:55:10 2012 -0800 1.2 +++ b/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Fri Nov 23 15:13:45 2012 +0000 1.3 @@ -348,8 +348,8 @@ 1.4 private void scanIdent() { 1.5 boolean isJavaIdentifierPart; 1.6 char high; 1.7 + reader.putChar(true); 1.8 do { 1.9 - reader.putChar(true); 1.10 switch (reader.ch) { 1.11 case 'A': case 'B': case 'C': case 'D': case 'E': 1.12 case 'F': case 'G': case 'H': case 'I': case 'J': 1.13 @@ -366,6 +366,7 @@ 1.14 case '$': case '_': 1.15 case '0': case '1': case '2': case '3': case '4': 1.16 case '5': case '6': case '7': case '8': case '9': 1.17 + break; 1.18 case '\u0000': case '\u0001': case '\u0002': case '\u0003': 1.19 case '\u0004': case '\u0005': case '\u0006': case '\u0007': 1.20 case '\u0008': case '\u000E': case '\u000F': case '\u0010': 1.21 @@ -373,26 +374,33 @@ 1.22 case '\u0015': case '\u0016': case '\u0017': 1.23 case '\u0018': case '\u0019': case '\u001B': 1.24 case '\u007F': 1.25 - break; 1.26 + reader.scanChar(); 1.27 + continue; 1.28 case '\u001A': // EOI is also a legal identifier part 1.29 if (reader.bp >= reader.buflen) { 1.30 name = reader.name(); 1.31 tk = tokens.lookupKind(name); 1.32 return; 1.33 } 1.34 - break; 1.35 + reader.scanChar(); 1.36 + continue; 1.37 default: 1.38 if (reader.ch < '\u0080') { 1.39 // all ASCII range chars already handled, above 1.40 isJavaIdentifierPart = false; 1.41 } else { 1.42 - high = reader.scanSurrogates(); 1.43 - if (high != 0) { 1.44 - reader.putChar(high); 1.45 - isJavaIdentifierPart = Character.isJavaIdentifierPart( 1.46 - Character.toCodePoint(high, reader.ch)); 1.47 + if (Character.isIdentifierIgnorable(reader.ch)) { 1.48 + reader.scanChar(); 1.49 + continue; 1.50 } else { 1.51 - isJavaIdentifierPart = Character.isJavaIdentifierPart(reader.ch); 1.52 + high = reader.scanSurrogates(); 1.53 + if (high != 0) { 1.54 + reader.putChar(high); 1.55 + isJavaIdentifierPart = Character.isJavaIdentifierPart( 1.56 + Character.toCodePoint(high, reader.ch)); 1.57 + } else { 1.58 + isJavaIdentifierPart = Character.isJavaIdentifierPart(reader.ch); 1.59 + } 1.60 } 1.61 } 1.62 if (!isJavaIdentifierPart) { 1.63 @@ -401,6 +409,7 @@ 1.64 return; 1.65 } 1.66 } 1.67 + reader.putChar(true); 1.68 } while (true); 1.69 } 1.70