| Index: dart/lib/compiler/implementation/js_backend/constant_emitter.dart
|
| diff --git a/dart/lib/compiler/implementation/js_backend/constant_emitter.dart b/dart/lib/compiler/implementation/js_backend/constant_emitter.dart
|
| index ad7b2b055f31b680a7b176a195af55da1fb5f454..a9e49c0f3a94f4bd2e4135cc72eef5626c55527f 100644
|
| --- a/dart/lib/compiler/implementation/js_backend/constant_emitter.dart
|
| +++ b/dart/lib/compiler/implementation/js_backend/constant_emitter.dart
|
| @@ -92,51 +92,12 @@ class ConstantEmitter implements ConstantVisitor {
|
| void writeEscapedString(DartString string,
|
| CodeBuffer buffer,
|
| Node diagnosticNode) {
|
| - Iterator<int> iterator = string.iterator();
|
| - while (iterator.hasNext) {
|
| - int code = iterator.next();
|
| - if (identical(code, $SQ)) {
|
| - buffer.add(r"\'");
|
| - } else if (identical(code, $LF)) {
|
| - buffer.add(r'\n');
|
| - } else if (identical(code, $CR)) {
|
| - buffer.add(r'\r');
|
| - } else if (identical(code, $LS)) {
|
| - // This Unicode line terminator and $PS are invalid in JS string
|
| - // literals.
|
| - buffer.add(r'\u2028');
|
| - } else if (identical(code, $PS)) {
|
| - buffer.add(r'\u2029');
|
| - } else if (identical(code, $BACKSLASH)) {
|
| - buffer.add(r'\\');
|
| - } else {
|
| - if (code > 0xffff) {
|
| - compiler.reportError(
|
| - diagnosticNode,
|
| - 'Unhandled non-BMP character: U+${code.toRadixString(16)}');
|
| - }
|
| - // TODO(lrn): Consider whether all codes above 0x7f really need to
|
| - // be escaped. We build a Dart string here, so it should be a literal
|
| - // stage that converts it to, e.g., UTF-8 for a JS interpreter.
|
| - if (code < 0x20) {
|
| - buffer.add(r'\x');
|
| - if (code < 0x10) buffer.add('0');
|
| - buffer.add(code.toRadixString(16));
|
| - } else if (code >= 0x80) {
|
| - if (code < 0x100) {
|
| - buffer.add(r'\x');
|
| - } else {
|
| - buffer.add(r'\u');
|
| - if (code < 0x1000) {
|
| - buffer.add('0');
|
| - }
|
| - }
|
| - buffer.add(code.toRadixString(16));
|
| - } else {
|
| - buffer.addCharCode(code);
|
| - }
|
| - }
|
| + void onError(code) {
|
| + compiler.reportError(
|
| + diagnosticNode,
|
| + 'Unhandled non-BMP character: U+${code.toRadixString(16)}');
|
| }
|
| + writeJsonEscapedCharsOn(string.iterator(), buffer, onError);
|
| }
|
|
|
| void visitString(StringConstant constant) {
|
|
|