diff --git a/harness/sm/non262-shell.js b/harness/sm/non262-shell.js index 9e5584df8f..590dc01d1f 100644 --- a/harness/sm/non262-shell.js +++ b/harness/sm/non262-shell.js @@ -5,7 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /*--- -defines: [assertThrowsValue, assertThrownErrorContains, assertThrowsInstanceOfWithMessageCheck, assertThrowsInstanceOf, assertThrowsInstanceOfWithMessage] +defines: [assertThrowsValue, assertThrownErrorContains, assertThrowsInstanceOfWithMessageCheck, assertThrowsInstanceOf] allow_unused: True ---*/ @@ -70,11 +70,4 @@ allow_unused: True assertThrowsInstanceOfWithMessageCheck(f, ctor, _ => true, msg); }; } - - if (typeof globalThis.assertThrowsInstanceOfWithMessage === 'undefined') { - globalThis.assertThrowsInstanceOfWithMessage = function assertThrowsInstanceOfWithMessage(f, ctor, expected, msg) { - assertThrowsInstanceOfWithMessageCheck(f, ctor, message => message === expected, msg); - } - } - })(); diff --git a/test/staging/sm/PrivateName/illegal-in-class-context.js b/test/staging/sm/PrivateName/illegal-in-class-context.js index dae64c3fee..65a26b4466 100644 --- a/test/staging/sm/PrivateName/illegal-in-class-context.js +++ b/test/staging/sm/PrivateName/illegal-in-class-context.js @@ -16,11 +16,14 @@ assertThrowsInstanceOf(() => eval(`class A { #x; #x; }`), SyntaxError); assertThrowsInstanceOf( () => eval(`var x = "foo"; class A { #[x] = 20; }`), SyntaxError); -assertThrowsInstanceOfWithMessage(() => eval(`class A { #x; h(o) { return !#x; }}`), +assert.throws( SyntaxError, + () => eval(`class A { #x; h(o) { return !#x; }}`), "invalid use of private name in unary expression without object reference"); -assertThrowsInstanceOfWithMessage(() => eval(`class A { #x; h(o) { return 1 + #x in o; }}`), + +assert.throws( SyntaxError, + () => eval(`class A { #x; h(o) { return 1 + #x in o; }}`), "invalid use of private name due to operator precedence"); diff --git a/test/staging/sm/String/iterator_edge_cases.js b/test/staging/sm/String/iterator_edge_cases.js index 99e4700916..c79d6a460a 100644 --- a/test/staging/sm/String/iterator_edge_cases.js +++ b/test/staging/sm/String/iterator_edge_cases.js @@ -9,13 +9,14 @@ description: | pending esid: pending ---*/ + // Test that we can't confuse %StringIteratorPrototype% for a // StringIterator object. function TestStringIteratorPrototypeConfusion() { var iter = ""[Symbol.iterator](); - assertThrowsInstanceOfWithMessage( - () => iter.next.call(Object.getPrototypeOf(iter)), + assert.throws( TypeError, + () => iter.next.call(Object.getPrototypeOf(iter)), "next method called on incompatible String Iterator"); } TestStringIteratorPrototypeConfusion(); diff --git a/test/staging/sm/String/thisv-error.js b/test/staging/sm/String/thisv-error.js index 5fdcae3e9a..38e335b8bf 100644 --- a/test/staging/sm/String/thisv-error.js +++ b/test/staging/sm/String/thisv-error.js @@ -3,12 +3,11 @@ /*--- includes: [sm/non262.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ + function testName(thisv) { var failures = [ // Not a function @@ -30,7 +29,7 @@ function testName(thisv) { assertThrowsInstanceOf(() => String.prototype[key].call(thisv), TypeError, key); } else { var expected = `String.prototype.${key} called on incompatible ${thisv}`; - assertThrowsInstanceOfWithMessage(() => String.prototype[key].call(thisv), TypeError, expected, key) + assert.throws(TypeError, () => String.prototype[key].call(thisv), expected) } } } @@ -39,7 +38,7 @@ testName(undefined); // On-off test for Symbol.iterator function testIterator(thisv) { - assertThrowsInstanceOfWithMessage(() => String.prototype[Symbol.iterator].call(thisv), TypeError, + assert.throws(TypeError, () => String.prototype[Symbol.iterator].call(thisv), `String.prototype[Symbol.iterator] called on incompatible ${thisv}`); } testIterator(null); diff --git a/test/staging/sm/class/uninitializedThisError.js b/test/staging/sm/class/uninitializedThisError.js index 4c81909ac1..e3646bbff7 100644 --- a/test/staging/sm/class/uninitializedThisError.js +++ b/test/staging/sm/class/uninitializedThisError.js @@ -2,33 +2,27 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -includes: [sm/non262.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ -function checkErr(f) { - assertThrowsInstanceOfWithMessage(f, ReferenceError, - "must call super constructor before using 'this' in derived class constructor"); -} + class TestNormal extends class {} { constructor() { this; } } -checkErr(() => new TestNormal()); +assert.throws(ReferenceError, () => new TestNormal()); class TestEval extends class {} { constructor() { eval("this") } } -checkErr(() => new TestEval()); +assert.throws(ReferenceError, () => new TestEval()); class TestNestedEval extends class {} { constructor() { eval("eval('this')") } } -checkErr(() => new TestNestedEval()); +assert.throws(ReferenceError, () => new TestNestedEval()); -checkErr(() => { +assert.throws(ReferenceError, () => { new class extends class {} { constructor() { eval("this") } } @@ -37,20 +31,19 @@ checkErr(() => { class TestArrow extends class {} { constructor() { (() => this)(); } } -checkErr(() => new TestArrow()); +assert.throws(ReferenceError, () => new TestArrow()); class TestArrowEval extends class {} { constructor() { (() => eval("this"))(); } } -checkErr(() => new TestArrowEval()); +assert.throws(ReferenceError, () => new TestArrowEval()); class TestEvalArrow extends class {} { constructor() { eval("(() => this)()"); } } -checkErr(() => new TestEvalArrow()); +assert.throws(ReferenceError, () => new TestEvalArrow()); class TestTypeOf extends class {} { constructor() { eval("typeof this"); } } -checkErr(() => new TestTypeOf()); - +assert.throws(ReferenceError, () => new TestTypeOf()); diff --git a/test/staging/sm/extensions/RegExp-error-message-skip-selfhosted-frames.js b/test/staging/sm/extensions/RegExp-error-message-skip-selfhosted-frames.js index 6b907734a4..e2f2f5c7ea 100644 --- a/test/staging/sm/extensions/RegExp-error-message-skip-selfhosted-frames.js +++ b/test/staging/sm/extensions/RegExp-error-message-skip-selfhosted-frames.js @@ -2,18 +2,16 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -includes: [sm/non262.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ + for (let name of ["test", Symbol.match, Symbol.replace, Symbol.search]) { let methodName = typeof name === "symbol" ? `[${name.description}]` : name; - assertThrowsInstanceOfWithMessage( - () => RegExp.prototype[name].call({}), + assert.throws( TypeError, + () => RegExp.prototype[name].call({}), `${methodName} method called on incompatible Object`); } diff --git a/test/staging/sm/extensions/decompile-for-of.js b/test/staging/sm/extensions/decompile-for-of.js index 79854e2e99..ca29b8d917 100644 --- a/test/staging/sm/extensions/decompile-for-of.js +++ b/test/staging/sm/extensions/decompile-for-of.js @@ -2,31 +2,21 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -includes: [sm/non262.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ + // The decompiler can handle the implicit call to @@iterator in a for-of loop. -var x; -function check(code, msg) { - assertThrowsInstanceOfWithMessage( - () => eval(code), - TypeError, - msg); -} - -x = {}; -check("for (var v of x) throw fit;", "x is not iterable"); -check("[...x]", "x is not iterable"); -check("Math.hypot(...x)", "x is not iterable"); +var x = {}; +assert.throws(TypeError, () => eval("for (var v of x) throw fit;"), "x is not iterable"); +assert.throws(TypeError, () => eval("[...x]"), "x is not iterable"); +assert.throws(TypeError, () => eval("Math.hypot(...x)"), "x is not iterable"); x[Symbol.iterator] = "potato"; -check("for (var v of x) throw fit;", "x is not iterable"); +assert.throws(TypeError, () => eval("for (var v of x) throw fit;"), "x is not iterable"); x[Symbol.iterator] = {}; -check("for (var v of x) throw fit;", "x[Symbol.iterator] is not a function"); +assert.throws(TypeError, () => eval("for (var v of x) throw fit;"), "x[Symbol.iterator] is not a function"); diff --git a/test/staging/sm/generators/yield-error.js b/test/staging/sm/generators/yield-error.js index 0b7f723848..8ad12bf686 100644 --- a/test/staging/sm/generators/yield-error.js +++ b/test/staging/sm/generators/yield-error.js @@ -2,30 +2,26 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -includes: [sm/non262.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ + var BUGNUMBER = 1384299; var summary = "yield outside of generators should provide better error"; -print(BUGNUMBER + ": " + summary); - -assertThrowsInstanceOfWithMessage( - () => eval("yield 10"), +assert.throws( SyntaxError, + () => eval("yield 10"), "yield expression is only valid in generators"); -assertThrowsInstanceOfWithMessage( - () => eval("yield 10"), +assert.throws( SyntaxError, + () => eval("yield 10"), "yield expression is only valid in generators"); -assertThrowsInstanceOfWithMessage( - () => eval("yield 10"), +assert.throws( SyntaxError, + () => eval("yield 10"), "yield expression is only valid in generators"); diff --git a/test/staging/sm/regress/regress-619003-1.js b/test/staging/sm/regress/regress-619003-1.js index 8f53b3eb12..d44f267774 100644 --- a/test/staging/sm/regress/regress-619003-1.js +++ b/test/staging/sm/regress/regress-619003-1.js @@ -4,20 +4,18 @@ */ /*--- -includes: [sm/non262.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ + var a = []; // Test up to 200 to cover tunables such as js::PropertyTree::MAX_HEIGHT. for (var i = 0; i < 200; i++) { a.push("b" + i); - assertThrowsInstanceOfWithMessage( - () => eval("(function ([" + a.join("],[") + "],a,a){})"), + assert.throws( SyntaxError, + () => eval("(function ([" + a.join("],[") + "],a,a){})"), 'duplicate argument names not allowed in this context'); } diff --git a/test/staging/sm/strict/deprecated-octal-noctal-tokens.js b/test/staging/sm/strict/deprecated-octal-noctal-tokens.js index 7b19dc75d9..e644dfc24b 100644 --- a/test/staging/sm/strict/deprecated-octal-noctal-tokens.js +++ b/test/staging/sm/strict/deprecated-octal-noctal-tokens.js @@ -4,13 +4,11 @@ */ /*--- -includes: [sm/non262.js, sm/non262-strict-shell.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ + /** * These test cases check implementation-specific error messages for invalid * octal literals, octal escape sequences, and non-octal decimal escape @@ -22,9 +20,9 @@ var JSMSG_DEPRECATED_OCTAL_ESCAPE = "octal escape sequences can't be used in unt var JSMSG_DEPRECATED_EIGHT_OR_NINE_ESCAPE = "the escapes \\8 and \\9 can't be used in untagged template literals or in strict mode code"; function checkPrologue(val, msg) { - assertThrowsInstanceOfWithMessage( - () => eval('function invalid () { "' + val + '"; "use strict"; }'), + assert.throws( SyntaxError, + () => eval('function invalid () { "' + val + '"; "use strict"; }'), msg ); } @@ -34,9 +32,9 @@ checkPrologue('\\222', JSMSG_DEPRECATED_OCTAL_ESCAPE); checkPrologue('\\222\\8', JSMSG_DEPRECATED_EIGHT_OR_NINE_ESCAPE); function checkAfter(val, msg) { - assertThrowsInstanceOfWithMessage( - () => eval('function invalid () { "use strict" \n ' + val + ' }'), + assert.throws( SyntaxError, + () => eval('function invalid () { "use strict" \n ' + val + ' }'), msg ); } diff --git a/test/staging/sm/syntax/bug1863308.js b/test/staging/sm/syntax/bug1863308.js index d3b65b8aaa..643fb4cb37 100644 --- a/test/staging/sm/syntax/bug1863308.js +++ b/test/staging/sm/syntax/bug1863308.js @@ -2,30 +2,28 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -includes: [sm/non262.js, sm/non262-shell.js] -flags: - - noStrict description: | pending esid: pending ---*/ -assertThrowsInstanceOfWithMessage( + +assert.throws( + SyntaxError, () => eval("for (let case of ['foo', 'bar']) {}"), - SyntaxError, "unexpected token: keyword 'case'"); -assertThrowsInstanceOfWithMessage( +assert.throws( + SyntaxError, () => eval("for (let debugger of ['foo', 'bar']) {}"), - SyntaxError, "unexpected token: keyword 'debugger'"); -assertThrowsInstanceOfWithMessage( - () => eval("for (let case in ['foo', 'bar']) {}"), +assert.throws( SyntaxError, + () => eval("for (let case in ['foo', 'bar']) {}"), "unexpected token: keyword 'case'"); -assertThrowsInstanceOfWithMessage( - () => eval("for (let debugger in ['foo', 'bar']) {}"), +assert.throws( SyntaxError, + () => eval("for (let debugger in ['foo', 'bar']) {}"), "unexpected token: keyword 'debugger'");