mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-04 05:33:50 +01:00 
			
		
		
		
	This re-factors some existing Sputnik tests to be more targeted and to use a pattern that can be generalized to other forms. We could test these all day, but I've limited myself to forms introduced in ES2015, specifically YieldExpression and new.target. Note that SpiderMonkey incorrectly throws a SyntaxError for these. I thoughtlessly wrote ReferenceError tests for yield = 1 until I realized that such productions are not actually recognized by the grammar, so the early errors do not apply. Instead, I've added a negative syntax test for that case. * Refactor test for valid cover * Add tests for ValidSimpleAssignmentTarget Ensure that constructs introduced in ES2015 are disallowed as assignment targets, with or without a "cover" grammar. * Add test for grammar precedence of YieldExpression
		
			
				
	
	
		
			30 lines
		
	
	
		
			785 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			785 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Copyright 2009 the Sputnik authors.  All rights reserved.
 | 
						|
// This code is governed by the BSD license found in the LICENSE file.
 | 
						|
/*---
 | 
						|
esid: sec-postfix-expressions-static-semantics-early-errors
 | 
						|
es6id: 12.4.1
 | 
						|
es5id: 11.1.6_A3_T5
 | 
						|
description: Applied to a "covered" IdentifierReference
 | 
						|
info: |
 | 
						|
  PostfixExpression :
 | 
						|
    LeftHandSideExpression ++
 | 
						|
    LeftHandSideExpression --
 | 
						|
 | 
						|
  - It is an early Reference Error if IsValidSimpleAssignmentTarget of
 | 
						|
    LeftHandSideExpression is false.
 | 
						|
 | 
						|
  Static Semantics: IsValidSimpleAssignmentTarget
 | 
						|
 | 
						|
  IdentifierReference : Identifier
 | 
						|
 | 
						|
  1. If this IdentifierReference is contained in strict mode code and
 | 
						|
     StringValue of Identifier is "eval" or "arguments", return false.
 | 
						|
  2. Return true.
 | 
						|
---*/
 | 
						|
 | 
						|
var y = 1;
 | 
						|
 | 
						|
(y)++;
 | 
						|
 | 
						|
assert.sameValue(y, 2);
 |