1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:38:11 +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

@ -49,6 +49,9 @@ public:
void make_method(Object& home_object);
[[nodiscard]] bool is_module_wrapper() const { return m_is_module_wrapper; }
void set_is_module_wrapper(bool b) { m_is_module_wrapper = b; }
Statement const& ecmascript_code() const { return m_ecmascript_code; }
Vector<FunctionParameter> const& formal_parameters() const { return m_formal_parameters; }
@ -153,6 +156,7 @@ private:
HashTable<DeprecatedFlyString> m_parameter_names;
Vector<FunctionDeclaration const&> m_functions_to_initialize;
bool m_arguments_object_needed { false };
bool m_is_module_wrapper { false };
Vector<VariableNameToInitialize> m_var_names_to_initialize_binding;
Vector<DeprecatedFlyString> m_function_names_to_initialize_binding;