1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 14:05:08 +00:00

LibJS: Add basic support for module code with top-level await

For now, we handle this by creating a synthetic async function to wrap
the top-level module code. This allows us to piggyback on the async
function driver wrapper mechanism.
This commit is contained in:
Andreas Kling 2023-12-06 11:35:40 +01:00
parent 26c21fba8e
commit a2c3db8367
4 changed files with 35 additions and 3 deletions

View file

@ -1192,7 +1192,11 @@ Completion ECMAScriptFunctionObject::ordinary_call_evaluate_body()
}
}
auto declaration_result = function_declaration_instantiation();
auto declaration_result = [&]() -> ThrowCompletionOr<void> {
if (is_module_wrapper())
return {};
return function_declaration_instantiation();
}();
if (m_kind == FunctionKind::Normal || m_kind == FunctionKind::Generator || m_kind == FunctionKind::AsyncGenerator) {
if (declaration_result.is_error())