 c177363a19
			
		
	
	c177363a19
	
	
	
		
			
			🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* 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<PropertyKey, unknown>} */
 | |
| 	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();
 | |
| });
 |