Index: test/mjsunit/harmony/unicode-escapes-in-regexps.js |
diff --git a/test/mjsunit/harmony/unicode-escapes-in-regexps.js b/test/mjsunit/harmony/unicode-escapes-in-regexps.js |
index f591dac930194037ac2f498bddc33c4f2a5ca92c..10187412aa9ca2a3c8e2ae26a2a1b20ab29e10c8 100644 |
--- a/test/mjsunit/harmony/unicode-escapes-in-regexps.js |
+++ b/test/mjsunit/harmony/unicode-escapes-in-regexps.js |
@@ -252,6 +252,30 @@ assertFalse(/(\u{12345}|\u{23456}).\1/u.test("\u{12345}b\u{23456}")); |
assertTrue(new RegExp("\u{12345}{3}", "u").test("\u{12345}\u{12345}\u{12345}")); |
assertTrue(/\u{12345}{3}/u.test("\u{12345}\u{12345}\u{12345}")); |
assertTrue(new RegExp("\u{12345}{3}").test("\u{12345}\udf45\udf45")); |
-assertTrue(/\ud808\udf45{3}/u.test("\u{12345}\udf45\udf45")); |
+assertFalse(/\ud808\udf45{3}/u.test("\u{12345}\udf45\udf45")); |
+assertTrue(/\ud808\udf45{3}/u.test("\u{12345}\u{12345}\u{12345}")); |
assertFalse(new RegExp("\u{12345}{3}", "u").test("\u{12345}\udf45\udf45")); |
assertFalse(/\u{12345}{3}/u.test("\u{12345}\udf45\udf45")); |
+ |
+// Mixed escapes and literal surrogates. |
+assertEquals(["\u{10000}\u{10000}"], |
+ new RegExp("\ud800\udc00+", "u").exec("\u{10000}\u{10000}")); |
+assertEquals(["\u{10000}\u{10000}"], |
+ new RegExp("\\ud800\\udc00+", "u").exec("\u{10000}\u{10000}")); |
+assertEquals(["\u{10000}\u{10000}"], |
+ new RegExp("\\ud800\udc00+", "u").exec("\u{10000}\u{10000}")); |
+assertEquals(["\u{10000}\u{10000}"], |
+ new RegExp("\ud800\\udc00+", "u").exec("\u{10000}\u{10000}")); |
+ |
+assertEquals(["\u{10003}\u{50001}"], |
+ new RegExp("[\\ud800\\udc03-\\ud900\\udc01\]+", "u").exec( |
+ "\u{10003}\u{50001}")); |
+assertEquals(["\u{10003}\u{50001}"], |
+ new RegExp("[\\ud800\udc03-\ud900\\udc01\]+", "u").exec( |
+ "\u{10003}\u{50001}")); |
+assertEquals(["\u{50001}"], |
+ new RegExp("[\\ud800\udc03-\ud900\\udc01\]+", "u").exec( |
+ "\u{10002}\u{50001}")); |
+assertEquals(["\u{10003}\u{50001}"], |
+ new RegExp("[\ud800\udc03-\u{50001}\]+", "u").exec( |
+ "\u{10003}\u{50001}")); |