function testSyntaxError(script, message) {
    var error = null;
    try {
        eval(script);
    } catch (e) {
        error = e;
    }
    if (!error)
        throw new Error("Expected syntax error not thrown");

    if (String(error) !== message)
        throw new Error("Bad error: " + String(error));
}


testSyntaxError(`
function f()
{
    ({v = (++new.target)} = {})
}
`, `SyntaxError: Unexpected token '='. Expected a ':' following the property name 'v'.`);
