mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	Test await in ConditionalExpression
				
					
				
			This commit is contained in:
		
							parent
							
								
									22967c5b7b
								
							
						
					
					
						commit
						b70b75793d
					
				| @ -0,0 +1,73 @@ | |||||||
|  | // Copyright (C) 2024 Richard Gibson. All rights reserved.
 | ||||||
|  | // This code is governed by the BSD license found in the LICENSE file.
 | ||||||
|  | /*--- | ||||||
|  | esid: prod-ConditionalExpression | ||||||
|  | description: > | ||||||
|  |     await binds more tightly than conditional operators | ||||||
|  | info: | | ||||||
|  |     ConditionalExpression[In, Yield, Await] : | ||||||
|  |       ShortCircuitExpression[?In, ?Yield, ?Await] | ||||||
|  |       ShortCircuitExpression[?In, ?Yield, ?Await] `?` AssignmentExpression[+In, ?Yield, ?Await] `:` AssignmentExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     ShortCircuitExpression[In, Yield, Await] : | ||||||
|  |       LogicalORExpression[?In, ?Yield, ?Await] | ||||||
|  |       CoalesceExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     LogicalORExpression[In, Yield, Await] : | ||||||
|  |       LogicalANDExpression[?In, ?Yield, ?Await] | ||||||
|  |       LogicalORExpression[?In, ?Yield, ?Await] `||` LogicalANDExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     LogicalANDExpression[In, Yield, Await] : | ||||||
|  |       BitwiseORExpression[?In, ?Yield, ?Await] | ||||||
|  |       LogicalANDExpression[?In, ?Yield, ?Await] `&&` BitwiseORExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     BitwiseORExpression[In, Yield, Await] : | ||||||
|  |       BitwiseXORExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     BitwiseXORExpression[In, Yield, Await] : | ||||||
|  |       BitwiseANDExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     BitwiseANDExpression[In, Yield, Await] : | ||||||
|  |       EqualityExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     EqualityExpression[In, Yield, Await] : | ||||||
|  |       RelationalExpression[?In, ?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     RelationalExpression[In, Yield, Await] : | ||||||
|  |       ShiftExpression[?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     ShiftExpression[Yield, Await] : | ||||||
|  |       AdditiveExpression[?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     AdditiveExpression[Yield, Await] : | ||||||
|  |       MultiplicativeExpression[?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     MultiplicativeExpression[Yield, Await] : | ||||||
|  |       ExponentiationExpression[?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     ExponentiationExpression[Yield, Await] : | ||||||
|  |       UnaryExpression[?Yield, ?Await] | ||||||
|  |      | ||||||
|  |     UnaryExpression[Yield, Await] : | ||||||
|  |       UpdateExpression[?Yield, ?Await] | ||||||
|  |       [+Await] AwaitExpression[?Yield] | ||||||
|  |      | ||||||
|  |     AwaitExpression[Yield] : | ||||||
|  |       `await` UnaryExpression[?Yield, +Await] | ||||||
|  | flags: [async] | ||||||
|  | includes: [asyncHelpers.js] | ||||||
|  | ---*/ | ||||||
|  | 
 | ||||||
|  | async function foo() { | ||||||
|  |   let x = 'initial value'; | ||||||
|  |   let shouldNotBeAwaited = { | ||||||
|  |     then: function(onFulfilled) { | ||||||
|  |       x = 'unexpected then() call'; | ||||||
|  |       Promise.resolve().then(onFulfilled); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |   // This must parse like `(await false) || shouldNotBeAwaited`.
 | ||||||
|  |   await false || shouldNotBeAwaited; | ||||||
|  |   assert.sameValue(x, 'initial value'); | ||||||
|  | } | ||||||
|  | asyncTest(foo); | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user