rhs-omitted.js (3113B)
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 es6id: 14.4 8 features: [generators] 9 ---*/ 10 11 var iter, result; 12 function* g1() { (yield) } 13 function* g2() { [yield] } 14 function* g3() { {yield} } 15 function* g4() { yield, yield; } 16 function* g5() { (yield) ? yield : yield; } 17 18 iter = g1(); 19 result = iter.next(); 20 assert.sameValue( 21 result.value, undefined, 'Within grouping operator: result `value`' 22 ); 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 = g2(); 35 result = iter.next(); 36 assert.sameValue( 37 result.value, undefined, 'Within array literal: result `value`' 38 ); 39 assert.sameValue( 40 result.done, false, 'Within array literal: result `done` flag' 41 ); 42 result = iter.next(); 43 assert.sameValue( 44 result.value, undefined, 'Following array literal: result `value`' 45 ); 46 assert.sameValue( 47 result.done, true, 'Following array literal: result `done` flag' 48 ); 49 50 iter = g3(); 51 result = iter.next(); 52 assert.sameValue( 53 result.value, undefined, 'Within object literal: result `value`' 54 ); 55 assert.sameValue( 56 result.done, false, 'Within object literal: result `done` flag' 57 ); 58 result = iter.next(); 59 assert.sameValue( 60 result.value, undefined, 'Following object literal: result `value`' 61 ); 62 assert.sameValue( 63 result.done, true, 'Following object literal: result `done` flag' 64 ); 65 66 iter = g4(); 67 result = iter.next(); 68 assert.sameValue( 69 result.value, 70 undefined, 71 'First expression in comma expression: result `value`' 72 ); 73 assert.sameValue( 74 result.done, 75 false, 76 'First expression in comma expression: result `done` flag' 77 ); 78 result = iter.next(); 79 assert.sameValue( 80 result.value, 81 undefined, 82 'Second expression in comma expression: result `value`' 83 ); 84 assert.sameValue( 85 result.done, 86 false, 87 'Second expression in comma expression: result `done` flag' 88 ); 89 result = iter.next(); 90 assert.sameValue( 91 result.value, undefined, 'Following comma expression: result `value`' 92 ); 93 assert.sameValue( 94 result.done, true, 'Following comma expression: result `done` flag' 95 ); 96 97 iter = g5(); 98 result = iter.next(); 99 assert.sameValue( 100 result.value, 101 undefined, 102 'Conditional expression in conditional operator: result `value`' 103 ); 104 assert.sameValue( 105 result.done, 106 false, 107 'Conditional expression in conditional operator: result `done` flag' 108 ); 109 result = iter.next(); 110 assert.sameValue( 111 result.value, 112 undefined, 113 'Branch in conditional operator: result `value`' 114 ); 115 assert.sameValue( 116 result.done, 117 false, 118 'Branch in conditional operator: result `done` flag' 119 ); 120 result = iter.next(); 121 assert.sameValue( 122 result.value, undefined, 'Following conditional operator: result `value`' 123 ); 124 assert.sameValue( 125 result.done, true, 'Following conditional operator: result `done` flag' 126 ); 127 128 reportCompare(0, 0);