while-dynamic-evaluation.js (961B)
1 // |reftest| module async 2 // Copyright (C) 2019 Leo Balter. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 5 /*--- 6 description: > 7 Evaluate Await expression for IfStatement 8 info: | 9 ModuleItem: 10 StatementListItem[~Yield, +Await, ~Return] 11 12 ... 13 14 UnaryExpression[Yield, Await] 15 [+Await]AwaitExpression[?Yield] 16 17 AwaitExpression[Yield]: 18 await UnaryExpression[?Yield, +Await] 19 esid: prod-AwaitExpression 20 flags: [module, async] 21 features: [top-level-await] 22 ---*/ 23 24 var values = []; 25 var p = Promise.resolve().then(() => { 26 // Replaces p! 27 p = Promise.resolve().then(() => { 28 p = Promise.resolve().then(() => { 29 values.push(3); 30 return false; 31 }); 32 33 values.push(2); 34 return true; 35 }) 36 37 values.push(1); 38 39 return true; 40 }); 41 42 while (await p) {} 43 44 assert.sameValue(values.length, 3); 45 assert.sameValue(values[0], 1); 46 assert.sameValue(values[1], 2); 47 assert.sameValue(values[2], 3); 48 49 $DONE();