v8/test/debugger
Simon Zünd 5bddc0e142 Implement top-level await for REPL mode
Design doc: bit.ly/v8-repl-mode

This CL allows the usage of 'await' without wrapping code in an async
function when using REPL mode in global evaluate. REPL mode evaluate
is changed to *always* return a Promise. The resolve value of the
promise is the completion value of the REPL script.

The implementation is based on two existing mechanisms:
  - Similar to async functions, the content of a REPL script is
    enclosed in a synthetic 'try' block. Any thrown error
    is used to reject the Promise of the REPL script.

  - The content of the synthetic 'try' block is also re-written the
    same way a normal script is. This is, artificial assignments to
    a ".result" variable are inserted to simulate a completion
    value. The difference for REPL scripts is, that ".result" is
    used to resolve the Promise of the REPL script.

  - ".result" is not returned directly but wrapped in an object
    literal: "{ .repl_result: .result}". This is done to prevent
    resolved promises from being chained and resolved prematurely:

    > Promse.resolve(42);

    should evaluate to a promise, not 42.

Bug: chromium:1021921
Change-Id: I00a5aafd9126ca7c97d09cd8787a3aec2821a67f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900464
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65273}
2019-12-02 09:09:43 +00:00
..
bugs/harmony [debug-wrapper] migrate some scope related tests 2016-12-14 07:20:33 +00:00
debug Implement top-level await for REPL mode 2019-12-02 09:09:43 +00:00
protocol [debugger] basic test infrastructure for new debugger test api. 2016-10-21 06:38:05 +00:00
regress Report real module in addition to fake scripts 2019-11-15 09:59:58 +00:00
wrapper [debugger] Various break-related functionality in test wrapper 2016-10-28 08:18:34 +00:00
BUILD.gn [build] Add data deps for d8 test suites 2018-03-26 13:44:58 +00:00
debugger.status [debug] Revert to old line number behavior for new Function() 2019-11-28 12:01:39 +00:00
OWNERS Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00
test-api.js Implement top-level await for REPL mode 2019-12-02 09:09:43 +00:00
testcfg.py [test] Remove module pragma in favor of .mjs 2019-06-27 13:25:48 +00:00