/* eslint no-restricted-syntax: 0, no-with: 0, strict: 0 */ var test = require('tape'); var shimUnscopables = require('../'); test('`with` statement', { skip: typeof Symbol !== 'function' || !Symbol.unscopables }, function (t) { // @ts-expect-error this variable is declared in case unscopables doesn't work var entries; // @ts-expect-error this variable is declared in case unscopables doesn't work var concat; // @ts-expect-error `with` unsupported with ([]) { t.equal(concat, Array.prototype.concat, 'concat is dynamically bound'); t.notEqual(entries, Array.prototype.entries, 'entries is not dynamically bound'); } /** @type {Record} */ var obj = { foo: 1, bar: 2 }; // @ts-expect-error this variable is declared in case unscopables doesn't work var foo; // @ts-expect-error this variable is declared in case unscopables doesn't work var bar; obj[Symbol.unscopables] = { foo: true }; // @ts-expect-error `with` unsupported with (obj) { t.equal(foo, undefined); t.equal(bar, obj.bar); } shimUnscopables('concat'); // @ts-expect-error `with` unsupported with ([]) { t.notEqual(concat, Array.prototype.concat, 'concat is no longer dynamically bound'); t.notEqual(entries, Array.prototype.entries, 'entries is still not dynamically bound'); } t.end(); });