Chromium Code Reviews| Index: test/mjsunit/harmony/regexp-named-captures.js |
| diff --git a/test/mjsunit/harmony/regexp-named-captures.js b/test/mjsunit/harmony/regexp-named-captures.js |
| index 9d6b9a95c7e0909e0cee0e27730e09c6be4d6520..855749bd346d59824803aaa5fe6dfd5b8b88e0e6 100644 |
| --- a/test/mjsunit/harmony/regexp-named-captures.js |
| +++ b/test/mjsunit/harmony/regexp-named-captures.js |
| @@ -183,6 +183,23 @@ assertThrows("/\\1(?<=a)./u", SyntaxError); |
| assertThrows("/\\1(?<!a)./u", SyntaxError); |
| assertEquals(["a", "a"], /\1(?<a>.)/u.exec("abcd")); |
| +// Unicode escapes in capture names. |
| +assertTrue(/(?<a\uD801\uDCA4>.)/u.test("a")); // \u Lead \u Trail |
| +assertThrows("/(?<a\\uD801>.)/u", SyntaxError); // \u Lead |
|
Yang
2017/04/05 08:03:35
Also test the case where you don't use the \u esca
jgruber
2017/04/07 08:01:23
You mean just a standard group name? "/(?<a\uD801>
jgruber
2017/04/07 08:02:54
Never mind, it's not. Will add a test.
|
| +assertThrows("/(?<a\\uDCA4>.)/u", SyntaxError); // \u Trail |
| +assertTrue(/(?<\u0041>.)/u.test("a")); // \u NonSurrogate |
| +assertTrue(/(?<\u{0041}>.)/u.test("a")); // \u{ Non-surrogate } |
| +assertTrue(/(?<a\u{104A4}>.)/u.test("a")); // \u{ Surrogate, ID_Continue } |
| +assertThrows("/(?<a\\u{110000}>.)/u", SyntaxError); // \u{ Out-of-bounds } |
| + |
| +assertThrows("/(?<a\\uD801\uDCA4>.)/", SyntaxError); |
| +assertThrows("/(?<a\\uD801>.)/", SyntaxError); |
| +assertThrows("/(?<a\\uDCA4>.)/", SyntaxError); |
| +assertTrue(/(?<\u0041>.)/.test("a")); |
| +assertThrows("/(?<\\u{0041}>.)/", SyntaxError); |
| +assertThrows("/(?<a\\u{104A4}>.)/", SyntaxError); |
| +assertThrows("/(?<a\\u{10FFFF}>.)/", SyntaxError); |
| + |
| // @@replace with a callable replacement argument (no named captures). |
| { |
| let result = "abcd".replace(/(.)(.)/u, (match, fst, snd, offset, str) => { |