/* * Copyright (c) 2023, Dan Klishch * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include "Forward.h" namespace JSSpecCompiler { struct TranslationUnit { FunctionDefinitionRef adopt_function(NonnullRefPtr&& function); StringView filename; Vector> function_definitions; HashMap function_index; }; class FunctionDeclaration : public RefCounted { public: FunctionDeclaration(StringView name); virtual ~FunctionDeclaration() = default; TranslationUnitRef m_translation_unit = nullptr; StringView m_name; }; class FunctionDefinition : public FunctionDeclaration { public: FunctionDefinition(StringView name, Tree ast); Tree m_ast; VariableDeclarationRef m_return_value; HashMap m_local_variables; RefPtr m_cfg; }; }