| Index: sdk/lib/_internal/compiler/implementation/scanner/token.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/scanner/token.dart b/sdk/lib/_internal/compiler/implementation/scanner/token.dart
|
| index a768b5038458be91960883793ce175f69e29d55d..4ef81cd0c7e066c369814d4953e3fd6fe7f46f99 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/scanner/token.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/scanner/token.dart
|
| @@ -231,6 +231,9 @@ class StringWrapper implements SourceString {
|
| bool isPrivate() => !isEmpty && identical(stringValue.charCodeAt(0), $_);
|
| }
|
|
|
| +
|
| +// TODO(erikcorry): Use the new code point iterator on String when it is
|
| +// available.
|
| class StringCodeIterator implements Iterator<int> {
|
| final String string;
|
| int index;
|
| @@ -246,7 +249,12 @@ class StringCodeIterator implements Iterator<int> {
|
| }
|
|
|
| bool get hasNext => index < end;
|
| - int next() => string.charCodeAt(index++);
|
| + int next() {
|
| + int charCode = string.charCodeAt(index++);
|
| + // Skip trail surrogate.
|
| + if (charCode >= String.SMP_CODE_POINT_BASE) index++;
|
| + return charCode;
|
| + }
|
| }
|
|
|
| class BeginGroupToken extends StringToken {
|
|
|