esm: graduate top-level-await to stable
Removes the experimental label in the docs and makes the `--experimental-top-level-await` flag a no-op. V8 has removed the harmony flag in V8 9.1 and consider the feature stable, there's no reason to keep it experimental in Node.js. PR-URL: https://github.com/nodejs/node/pull/42875 Reviewed-By: Jacob Smith <jacob@frende.me> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com> Reviewed-By: Mestery <mestery@protonmail.com> Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
This commit is contained in:
parent
17826f54c0
commit
517fe9584a
@ -566,8 +566,6 @@ would provide the exports interface for the instantiation of `module.wasm`.
|
||||
added: v14.8.0
|
||||
-->
|
||||
|
||||
> Stability: 1 - Experimental
|
||||
|
||||
The `await` keyword may be used in the top level body of an ECMAScript module.
|
||||
|
||||
Assuming an `a.mjs` with
|
||||
|
@ -428,13 +428,7 @@ void ModuleWrap::Evaluate(const FunctionCallbackInfo<Value>& args) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If TLA is enabled, `result` is the evaluation's promise.
|
||||
// Otherwise, `result` is the last evaluated value of the module,
|
||||
// which could be a promise, which would result in it being incorrectly
|
||||
// unwrapped when the higher level code awaits the evaluation.
|
||||
if (env->isolate_data()->options()->experimental_top_level_await) {
|
||||
args.GetReturnValue().Set(result.ToLocalChecked());
|
||||
}
|
||||
args.GetReturnValue().Set(result.ToLocalChecked());
|
||||
}
|
||||
|
||||
void ModuleWrap::GetNamespace(const FunctionCallbackInfo<Value>& args) {
|
||||
|
@ -700,14 +700,8 @@ PerIsolateOptionsParser::PerIsolateOptionsParser(
|
||||
kAllowedInEnvironment);
|
||||
Implies("--report-signal", "--report-on-signal");
|
||||
|
||||
AddOption("--experimental-top-level-await",
|
||||
"",
|
||||
&PerIsolateOptions::experimental_top_level_await,
|
||||
kAllowedInEnvironment);
|
||||
AddOption("--harmony-top-level-await", "", V8Option{});
|
||||
Implies("--experimental-top-level-await", "--harmony-top-level-await");
|
||||
Implies("--harmony-top-level-await", "--experimental-top-level-await");
|
||||
ImpliesNot("--no-harmony-top-level-await", "--experimental-top-level-await");
|
||||
AddOption(
|
||||
"--experimental-top-level-await", "", NoOp{}, kAllowedInEnvironment);
|
||||
|
||||
Insert(eop, &PerIsolateOptions::get_per_env_options);
|
||||
}
|
||||
|
@ -205,7 +205,6 @@ class PerIsolateOptions : public Options {
|
||||
bool track_heap_objects = false;
|
||||
bool report_uncaught_exception = false;
|
||||
bool report_on_signal = false;
|
||||
bool experimental_top_level_await = true;
|
||||
std::string report_signal = "SIGUSR2";
|
||||
inline EnvironmentOptions* get_per_env_options();
|
||||
void CheckOptions(std::vector<std::string>* errors) override;
|
||||
|
Loading…
x
Reference in New Issue
Block a user