Fix the StringScanner tests under dart2js.
R=kevmoo@google.com
Review URL: https://codereview.chromium.org//222613006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/string_scanner@34677 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/lib/string_scanner.dart b/lib/string_scanner.dart
index 31ccd62..3e3913b 100644
--- a/lib/string_scanner.dart
+++ b/lib/string_scanner.dart
@@ -7,6 +7,11 @@
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 @@
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('"', '\\"');