From b8971275bb9467b1a96ba2f9d87376e49c1c577e Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Tue, 23 Apr 2024 22:05:04 +0200 Subject: [PATCH] Check that CheckpointResumeRepository is built for CP/R registration --- src/language/ast/ASTModulesImporter.cpp | 5 ++++- src/language/ast/CMakeLists.txt | 7 ++++++- src/language/modules/ModuleRepository.cpp | 5 ++++- src/language/utils/CheckpointResumeRepository.hpp | 6 ++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/language/ast/ASTModulesImporter.cpp b/src/language/ast/ASTModulesImporter.cpp index 7b9670160..4cae0a921 100644 --- a/src/language/ast/ASTModulesImporter.cpp +++ b/src/language/ast/ASTModulesImporter.cpp @@ -1,6 +1,7 @@ #include <language/ast/ASTModulesImporter.hpp> #include <language/PEGGrammar.hpp> +#include <language/utils/CheckpointResumeRepository.hpp> #include <language/utils/OperatorRepository.hpp> #include <utils/ConsoleManager.hpp> @@ -27,7 +28,9 @@ ASTModulesImporter::_importModule(ASTNode& import_node) m_module_repository.populateSymbolTable(module_name_node, m_symbol_table); m_module_repository.registerOperators(module_name); - m_module_repository.registerCheckpointResume(module_name); + if (CheckpointResumeRepository::isCreated()) { + m_module_repository.registerCheckpointResume(module_name); + } } void diff --git a/src/language/ast/CMakeLists.txt b/src/language/ast/CMakeLists.txt index cd2f89636..148560658 100644 --- a/src/language/ast/CMakeLists.txt +++ b/src/language/ast/CMakeLists.txt @@ -23,7 +23,12 @@ add_library(PugsLanguageAST ASTNodeUnaryOperatorExpressionBuilder.cpp ASTSymbolInitializationChecker.cpp ASTSymbolTableBuilder.cpp - ) +) + +target_link_libraries( + PugsLanguageAST + ${HIGHFIVE_TARGET} +) add_dependencies(PugsLanguageAST diff --git a/src/language/modules/ModuleRepository.cpp b/src/language/modules/ModuleRepository.cpp index 53404f533..59689fb6f 100644 --- a/src/language/modules/ModuleRepository.cpp +++ b/src/language/modules/ModuleRepository.cpp @@ -11,6 +11,7 @@ #include <language/modules/WriterModule.hpp> #include <language/utils/BasicAffectationRegistrerFor.hpp> #include <language/utils/BuiltinFunctionEmbedder.hpp> +#include <language/utils/CheckpointResumeRepository.hpp> #include <language/utils/ParseError.hpp> #include <language/utils/SymbolTable.hpp> #include <language/utils/TypeDescriptor.hpp> @@ -164,7 +165,9 @@ ModuleRepository::populateMandatoryData(const ASTNode& root_node, SymbolTable& s this->_populateSymbolTable(root_node, module_name, i_module->getNameValueMap(), symbol_table); - i_module->registerCheckpointResume(); + if (CheckpointResumeRepository::isCreated()) { + i_module->registerCheckpointResume(); + } for (const auto& [symbol_name, embedded] : i_module->getNameTypeMap()) { BasicAffectationRegisterFor<EmbeddedData>(ASTNodeDataType::build<ASTNodeDataType::type_id_t>(symbol_name)); diff --git a/src/language/utils/CheckpointResumeRepository.hpp b/src/language/utils/CheckpointResumeRepository.hpp index 73419282d..7aef97e79 100644 --- a/src/language/utils/CheckpointResumeRepository.hpp +++ b/src/language/utils/CheckpointResumeRepository.hpp @@ -63,6 +63,12 @@ class CheckpointResumeRepository static void create(); + static bool + isCreated() + { + return m_instance != nullptr; + } + PUGS_INLINE static CheckpointResumeRepository& instance() -- GitLab