mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-30 19:24:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright 2019 the V8 project authors. All rights reserved.
 | |
| // Use of this source code is governed by a BSD-style license that can be
 | |
| // found in the LICENSE file.
 | |
| 
 | |
| // Flags: --allow-natives-syntax
 | |
| 
 | |
| // Parameters can't have parentheses (both patterns and identifiers)
 | |
| assertThrows("( ({x: 1}) ) => {};", SyntaxError);
 | |
| assertThrows("( (x) ) => {}", SyntaxError);
 | |
| assertThrows("( ({x: 1}) = y ) => {}", SyntaxError);
 | |
| assertThrows("( (x) = y ) => {}", SyntaxError);
 | |
| 
 | |
| // Declarations can't have parentheses (both patterns and identifiers)
 | |
| assertThrows("let [({x: 1})] = [];", SyntaxError);
 | |
| assertThrows("let [(x)] = [];", SyntaxError);
 | |
| assertThrows("let [({x: 1}) = y] = [];", SyntaxError);
 | |
| assertThrows("let [(x) = y] = [];", SyntaxError);
 | |
| assertThrows("var [({x: 1})] = [];", SyntaxError);
 | |
| assertThrows("var [(x)] = [];", SyntaxError);
 | |
| assertThrows("var [({x: 1}) = y] = [];", SyntaxError);
 | |
| assertThrows("var [(x) = y] = [];", SyntaxError);
 | |
| 
 | |
| // Patterns in can't have parentheses in assignments either
 | |
| assertThrows("[({x: 1}) = y] = [];", SyntaxError);
 | |
| 
 | |
| // Parentheses are fine around identifiers in assignments though, even inside a
 | |
| // pattern
 | |
| var x;
 | |
| [(x)] = [2];
 | |
| assertEquals(x, 2);
 | |
| [(x) = 3] = [];
 | |
| assertEquals(x, 3);
 |