/** * Reviewed * Add length property check for function forms in the language folder */ function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } function shouldThrow(func, errorMessage) { var errorThrown = false; var error = null; try { func(); } catch (e) { errorThrown = true; error = e; } if (!errorThrown) throw new Error('not thrown'); if (String(error) !== errorMessage) throw new Error(`bad error: ${String(error)}`); } { shouldBe(JSON.stringify(Object.getOwnPropertyNames(Array.prototype.filter).sort()), `["length","name"]`); shouldBe(Array.prototype.filter.length, 1); shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(Array.prototype.filter, 'length')), `{"value":1,"writable":false,"enumerable":false,"configurable":true}`); shouldBe(delete Array.prototype.filter.length, true); shouldBe(JSON.stringify(Object.getOwnPropertyNames(Array.prototype.filter).sort()), `["name"]`); } { shouldThrow(function () { "use strict"; Array.prototype.forEach.length = 42; }, `TypeError: Attempted to assign to readonly property.`); } { var resolve = null; var reject = null; new Promise(function (arg0, arg1) { resolve = arg0; reject = arg1; }); shouldBe(resolve.length, 1); shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(resolve, 'length')), `{"value":1,"writable":false,"enumerable":false,"configurable":true}`); shouldBe(reject.length, 1); shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(reject, 'length')), `{"value":1,"writable":false,"enumerable":false,"configurable":true}`); }