| // This test checks that malformed regular expressions compiled at runtime throw SyntaxErrors |
| |
| function testThrowsSyntaxtError(f) |
| { |
| try { |
| f(); |
| } catch (e) { |
| if (!e instanceof SyntaxError) |
| throw "Expected SynteaxError, but got: " + e; |
| } |
| } |
| |
| function fromExecWithBadUnicodeEscape() |
| { |
| let baseRE = /\u{123x}/; |
| let line = "abc"; |
| |
| (new RegExp(baseRE, "u")).exec(line); |
| } |
| |
| function fromTestWithBadUnicodeProperty() |
| { |
| let baseRE = /a|\p{Blah}/; |
| let line = "abc"; |
| |
| (new RegExp(baseRE, "u")).test(line); |
| } |
| |
| function fromSplitWithBadUnicodeIdentity() |
| { |
| let baseRE = /,|:|\-/; |
| let line = "abc:def-ghi"; |
| |
| let fields = line.split(new RegExp(baseRE, "u")); |
| } |
| |
| function fromMatchWithBadUnicodeBackReference() |
| { |
| let baseRE = /\123/; |
| let line = "xyz"; |
| |
| let fields = line.match(new RegExp(baseRE, "u")); |
| } |
| |
| function fromReplaceWithBadUnicodeEscape() |
| { |
| let baseRE = /\%/; |
| let line = "xyz"; |
| |
| let fields = line.replace(new RegExp(baseRE, "u"), "x"); |
| } |
| |
| function fromSearchWithBadUnicodeEscape() |
| { |
| let baseRE = /\=/; |
| let line = "xyz"; |
| |
| let fields = line.search(new RegExp(baseRE, "u")); |
| } |
| |
| testThrowsSyntaxtError(fromExecWithBadUnicodeEscape); |
| testThrowsSyntaxtError(fromTestWithBadUnicodeProperty); |
| testThrowsSyntaxtError(fromSplitWithBadUnicodeIdentity); |
| testThrowsSyntaxtError(fromMatchWithBadUnicodeBackReference); |
| testThrowsSyntaxtError(fromReplaceWithBadUnicodeEscape); |
| testThrowsSyntaxtError(fromSearchWithBadUnicodeEscape); |