test262/implementation-contributed/javascriptcore/stress/regexp-with-runtime-syntax-errors.js
test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

67 lines
1.5 KiB
JavaScript

// 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);