methods-gen-yield-as-expression-with-rhs.js (3090B)
1 // Copyright (C) 2013 the V8 project authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 description: > 6 `yield` is a valid expression within generator function bodies. 7 features: [generators] 8 es6id: 14.4 9 ---*/ 10 11 var iter, result; 12 class A { 13 *g1() { (yield 1) } 14 *g2() { [yield 1] } 15 *g3() { {yield 1} } 16 *g4() { yield 1, yield 2; } 17 *g5() { (yield 1) ? yield 2 : yield 3; } 18 } 19 20 iter = A.prototype.g1(); 21 result = iter.next(); 22 assert.sameValue(result.value, 1, 'Within grouping operator: result `value`'); 23 assert.sameValue( 24 result.done, false, 'Within grouping operator: result `done` flag' 25 ); 26 result = iter.next(); 27 assert.sameValue( 28 result.value, undefined, 'Following grouping operator: result `value`' 29 ); 30 assert.sameValue( 31 result.done, true, 'Following grouping operator: result `done` flag' 32 ); 33 34 iter = A.prototype.g2(); 35 result = iter.next(); 36 assert.sameValue(result.value, 1, 'Within array literal: result `value`'); 37 assert.sameValue( 38 result.done, false, 'Within array literal: result `done` flag' 39 ); 40 result = iter.next(); 41 assert.sameValue( 42 result.value, undefined, 'Following array literal: result `value`' 43 ); 44 assert.sameValue( 45 result.done, true, 'Following array literal: result `done` flag' 46 ); 47 48 iter = A.prototype.g3(); 49 result = iter.next(); 50 assert.sameValue(result.value, 1, 'Within object literal: result `value`'); 51 assert.sameValue( 52 result.done, false, 'Within object literal: result `done` flag' 53 ); 54 result = iter.next(); 55 assert.sameValue( 56 result.value, undefined, 'Following object literal: result `value`' 57 ); 58 assert.sameValue( 59 result.done, true, 'Following object literal: result `done` flag' 60 ); 61 62 iter = A.prototype.g4(); 63 result = iter.next(); 64 assert.sameValue( 65 result.value, 1, 'First expression in comma expression: result `value`' 66 ); 67 assert.sameValue( 68 result.done, 69 false, 70 'First expression in comma expression: result `done` flag' 71 ); 72 result = iter.next(); 73 assert.sameValue( 74 result.value, 2, 'Second expression in comma expression: result `value`' 75 ); 76 assert.sameValue( 77 result.done, 78 false, 79 'Second expression in comma expression: result `done` flag' 80 ); 81 result = iter.next(); 82 assert.sameValue( 83 result.value, undefined, 'Following comma expression: result `value`' 84 ); 85 assert.sameValue( 86 result.done, true, 'Following comma expression: result `done` flag' 87 ); 88 89 iter = A.prototype.g5(); 90 result = iter.next(); 91 assert.sameValue( 92 result.value, 93 1, 94 'Conditional expression in conditional operator: result `value`' 95 ); 96 assert.sameValue( 97 result.done, 98 false, 99 'Conditional expression in conditional operator: result `done` flag' 100 ); 101 result = iter.next(); 102 assert.sameValue( 103 result.value, 104 3, 105 'Branch in conditional operator: result `value`' 106 ); 107 assert.sameValue( 108 result.done, 109 false, 110 'Branch in conditional operator: result `done` flag' 111 ); 112 result = iter.next(); 113 assert.sameValue( 114 result.value, undefined, 'Following conditional operator: result `value`' 115 ); 116 assert.sameValue( 117 result.done, true, 'Following conditional operator: result `done` flag' 118 ); 119 120 reportCompare(0, 0);