yield-spread-obj.js (2069B)
1 // This file was procedurally generated from the following sources: 2 // - src/generators/yield-spread-obj.case 3 // - src/generators/default/class-decl-static-private-method.template 4 /*--- 5 description: Use yield value in a object spread position (Static generator private method as a ClassDeclaration element) 6 esid: prod-GeneratorPrivateMethod 7 features: [object-spread, generators, class-static-methods-private] 8 flags: [generated] 9 info: | 10 ClassElement : 11 static PrivateMethodDefinition 12 13 MethodDefinition : 14 GeneratorMethod 15 16 14.4 Generator Function Definitions 17 18 GeneratorMethod : 19 * PropertyName ( UniqueFormalParameters ) { GeneratorBody } 20 21 22 Spread Properties 23 24 PropertyDefinition[Yield]: 25 (...) 26 ...AssignmentExpression[In, ?Yield] 27 28 ---*/ 29 30 var callCount = 0; 31 32 class C { 33 static *#gen() { 34 callCount += 1; 35 yield { 36 ...yield, 37 y: 1, 38 ...yield yield, 39 }; 40 } 41 static get gen() { return this.#gen; } 42 } 43 44 // Test the private fields do not appear as properties before set to value 45 assert( 46 !Object.prototype.hasOwnProperty.call(C.prototype, "#gen"), 47 "Private field '#gen' does not appear as an own property on C prototype" 48 ); 49 assert( 50 !Object.prototype.hasOwnProperty.call(C, "#gen"), 51 "Private field '#gen' does not appear as an own property on C constructor" 52 ); 53 54 var iter = C.gen(); 55 56 iter.next(); 57 iter.next({ x: 42 }); 58 iter.next({ x: 'lol' }); 59 var item = iter.next({ y: 39 }); 60 61 assert.sameValue(item.value.x, 42); 62 assert.sameValue(item.value.y, 39); 63 assert.sameValue(Object.keys(item.value).length, 2); 64 assert.sameValue(item.done, false); 65 66 assert.sameValue(callCount, 1); 67 68 // Test the private fields do not appear as properties before set to value 69 assert( 70 !Object.prototype.hasOwnProperty.call(C.prototype, "#gen"), 71 "Private field '#gen' does not appear as an own property on C prototype" 72 ); 73 assert( 74 !Object.prototype.hasOwnProperty.call(C, "#gen"), 75 "Private field '#gen' does not appear as an own property on C constructor" 76 ); 77 78 reportCompare(0, 0);