mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright (C) 2016 the V8 project authors. All rights reserved.
 | |
| // This code is governed by the BSD license found in the LICENSE file.
 | |
| /*---
 | |
| esid: sec-destructuring-assignment
 | |
| es6id: 12.14.5
 | |
| description: Duplicate __proto__ property names
 | |
| info: |
 | |
|     Annex B defines an early error for duplicate PropertyName of `__proto__`,
 | |
|     in object initializers, but this does not apply to Object Assignment
 | |
|     patterns
 | |
| ---*/
 | |
| 
 | |
| // Explicitly define an "own" property to avoid Annex B "__proto__ Property
 | |
| // Names in Object Initializers" semantics (in environments which implement
 | |
| // that extension)
 | |
| var value = Object.defineProperty({}, '__proto__', { value: 123 });
 | |
| var result, x, y;
 | |
| 
 | |
| result = { __proto__: x, __proto__: y } = value;
 | |
| 
 | |
| assert.sameValue(result, value);
 | |
| assert.sameValue(x, 123, 'first AssignmentProperty');
 | |
| assert.sameValue(y, 123, 'second AssignmentProperty');
 | |
| 
 | |
| result = x = y = null;
 | |
| 
 | |
| // CoverParenthesizedExpressionAndArrowParameterList
 | |
| result = ({ __proto__: x, __proto__: y } = value);
 | |
| 
 | |
| assert.sameValue(result, value);
 | |
| assert.sameValue(x, 123, 'first AssignmentProperty (CPEAAPL)');
 | |
| assert.sameValue(y, 123, 'second AssignmentProperty (CPEAAPL)');
 |