1 // Copyright 2016 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Flags: --expose-debug-as debug --allow-natives-syntax --harmony-async-await 6 7 var Debug = debug.Debug; 8 var step_count = 0; 9 10 function listener(event, execState, eventData, data) { 11 if (event != Debug.DebugEvent.Break) return; 12 try { 13 var line = execState.frame(0).sourceLineText(); 14 print(line); 15 var [match, expected_count, step] = /\/\/ B(\d) (\w+)$/.exec(line); 16 assertEquals(step_count++, parseInt(expected_count)); 17 if (step != "Continue") execState.prepareStep(Debug.StepAction[step]); 18 } catch (e) { 19 print(e, e.stack); 20 quit(1); 21 } 22 } 23 24 Debug.setListener(listener); 25 26 var late_resolve; 27 28 function g() { 29 return new Promise( 30 function(res, rej) { 31 late_resolve = res; 32 } 33 ); 34 } 35 36 async function f() { 37 var a = 1; 38 debugger; // B0 StepNext 39 a += await g(); // B1 StepOut 40 return a; 41 } 42 43 f(); 44 45 late_resolve(3); // B2 Continue 46 47 %RunMicrotasks(); 48 49 assertEquals(3, step_count); 50