mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	Test primitive retval of Iterator and AsyncIterator getters
The existing test passed an object for a `this` value. This commit checks that primitive values are returned verbatim, without any conversion. Resolve #3489.
This commit is contained in:
		
							parent
							
								
									dadf18f416
								
							
						
					
					
						commit
						c665ccea28
					
				| @ -10,11 +10,22 @@ features: [Symbol.asyncIterator, async-iteration] | ||||
| ---*/ | ||||
| 
 | ||||
| async function* generator() {} | ||||
| var AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(generator.prototype)) | ||||
| const AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(generator.prototype)) | ||||
| const getAsyncIterator = AsyncIteratorPrototype[Symbol.asyncIterator]; | ||||
| 
 | ||||
| var thisValue = {}; | ||||
| const thisValues = [ | ||||
|     {}, | ||||
|     Symbol(), | ||||
|     4, | ||||
|     4n, | ||||
|     true, | ||||
|     undefined, | ||||
|     null, | ||||
| ]; | ||||
| 
 | ||||
| assert.sameValue( | ||||
|   AsyncIteratorPrototype[Symbol.asyncIterator].call(thisValue), | ||||
| for (const thisValue of thisValues) { | ||||
|     assert.sameValue( | ||||
|         getAsyncIterator.call(thisValue), | ||||
|         thisValue | ||||
| ); | ||||
|     ); | ||||
| } | ||||
|  | ||||
| @ -1,19 +1,32 @@ | ||||
| // Copyright (C) 2015 the V8 project authors. All rights reserved.
 | ||||
| // This code is governed by the BSD license found in the LICENSE file.
 | ||||
| /*--- | ||||
| es6id: 25.1.2.1 | ||||
| description: Descriptor for `name` property | ||||
| esid: sec-%iteratorprototype%-@@iterator | ||||
| description: Return value of @@iterator on IteratorPrototype | ||||
| info: | | ||||
|   %IteratorPrototype% [ @@iterator ] ( ) | ||||
|     1. Return the this value. | ||||
| features: [Symbol.iterator] | ||||
| ---*/ | ||||
| 
 | ||||
| var IteratorPrototype = Object.getPrototypeOf( | ||||
| const IteratorPrototype = Object.getPrototypeOf( | ||||
|   Object.getPrototypeOf([][Symbol.iterator]()) | ||||
| ); | ||||
| var thisValue = {}; | ||||
| const getIterator = IteratorPrototype[Symbol.iterator]; | ||||
| 
 | ||||
| assert.sameValue( | ||||
|   IteratorPrototype[Symbol.iterator].call(thisValue), | ||||
| const thisValues = [ | ||||
|     {}, | ||||
|     Symbol(), | ||||
|     4, | ||||
|     4n, | ||||
|     true, | ||||
|     undefined, | ||||
|     null, | ||||
| ]; | ||||
| 
 | ||||
| for (const thisValue of thisValues) { | ||||
|     assert.sameValue( | ||||
|         getIterator.call(thisValue), | ||||
|         thisValue | ||||
| ); | ||||
|     ); | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user