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