| Index: pkg/string_scanner/lib/string_scanner.dart
|
| diff --git a/pkg/string_scanner/lib/string_scanner.dart b/pkg/string_scanner/lib/string_scanner.dart
|
| index 31ccd62664f82a3d9f3a3193917db70c13e0254f..3e3913b50169ba5796102c6314aba658341457b8 100644
|
| --- a/pkg/string_scanner/lib/string_scanner.dart
|
| +++ b/pkg/string_scanner/lib/string_scanner.dart
|
| @@ -7,6 +7,11 @@ library string_scanner;
|
|
|
| import 'dart:math' as math;
|
|
|
| +/// When compiled to JS, forward slashes are always escaped in [RegExp.pattern].
|
| +///
|
| +/// See issue 17998.
|
| +final _slashAutoEscape = new RegExp("/").pattern == "\\/";
|
| +
|
| // TODO(nweiz): Add some integration between this and source maps.
|
| /// A class that scans through a string using [Pattern]s.
|
| class StringScanner {
|
| @@ -65,7 +70,9 @@ class StringScanner {
|
|
|
| if (name == null) {
|
| if (pattern is RegExp) {
|
| - name = "/${pattern.pattern.replaceAll("/", "\\/")}/";
|
| + var source = pattern.pattern;
|
| + if (!_slashAutoEscape) source = source.replaceAll("/", "\\/");
|
| + name = "/$source/";
|
| } else {
|
| name = pattern.toString()
|
| .replaceAll("\\", "\\\\").replaceAll('"', '\\"');
|
|
|