mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	* Add missing generators feature flags * Generate files * Add generators flags * fixup! Add generators flags
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 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-generator-function-definitions
 | |
| es6id: 14.4
 | |
| description: >
 | |
|   YieldExpression contextually recognizes the `in` keyword as part of a
 | |
|   RelationalExpression
 | |
| info: |
 | |
|   Syntax
 | |
| 
 | |
|   yield [no LineTerminator here] AssignmentExpression[?In, +Yield]
 | |
| features: [generators, Symbol.iterator]
 | |
| ---*/
 | |
| 
 | |
| var obj = Object.create({ hit: true });
 | |
| var iter, iterResult, value;
 | |
| Boolean.prototype[Symbol.iterator] = function* () { yield this.valueOf(); };
 | |
| function* g() {
 | |
|   value = yield * 'hit' in obj;
 | |
|   value = yield * 'miss' in obj;
 | |
| }
 | |
| 
 | |
| iter = g();
 | |
| 
 | |
| iterResult = iter.next('first');
 | |
| 
 | |
| assert.sameValue(iterResult.done, false, '`done` property (first iteration)');
 | |
| assert.sameValue(iterResult.value, true, '`value` property (first iteration)');
 | |
| assert.sameValue(
 | |
|   value, undefined, 'generator paused prior to evaluating AssignmentExpression'
 | |
| );
 | |
| 
 | |
| iterResult = iter.next('second');
 | |
| 
 | |
| assert.sameValue(iterResult.done, false, '`done` property (second iteration)');
 | |
| assert.sameValue(
 | |
|   iterResult.value, false, '`value` property (second iteration)'
 | |
| );
 | |
| assert.sameValue(value, undefined, 'value of first AssignmentExpression');
 | |
| 
 | |
| iterResult = iter.next('third');
 | |
| 
 | |
| assert.sameValue(iterResult.done, true, '`done` property (third iteration)');
 | |
| assert.sameValue(
 | |
|   iterResult.value, undefined, '`value` property (third iteration)'
 | |
| );
 | |
| assert.sameValue(value, undefined, 'value of second AssignmentExpression');
 |