From 967be9e750221ab2ab783f95df79bb26d290a45e Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:07:58 +0200 Subject: add: added projects --- tiger-compiler/src/testsuite/tasks.cc | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tiger-compiler/src/testsuite/tasks.cc (limited to 'tiger-compiler/src/testsuite/tasks.cc') diff --git a/tiger-compiler/src/testsuite/tasks.cc b/tiger-compiler/src/testsuite/tasks.cc new file mode 100644 index 0000000..c7f1164 --- /dev/null +++ b/tiger-compiler/src/testsuite/tasks.cc @@ -0,0 +1,49 @@ +/** + ** \file testsuite/tasks.hh + ** \brief Testsuite module related tasks' implementation. + */ + +#include +#include +#include + +#include +#include +#define DEFINE_TASKS 1 +#include +#undef DEFINE_TASKS + +namespace testsuite::tasks + { + + void add_testsuite_runtime() + { + /** + * A testsuite being a series of function declaration, the prelude is + * not included by default. As such, we need to insert it on our own + * within the AST. + */ + parse::Tweast new_program; + + const auto prelude = parse::parse_prelude(); + const auto current_program = ast::tasks::the_program.release(); + + const auto tests = find_program_tests(*current_program); + + const auto testsuite_runtime = create_testsuite_runtime(tests); + + current_program->emplace_back(testsuite_runtime); + + if (prelude != nullptr) + { + new_program << prelude; + } + + new_program << current_program; + + const auto new_ast = parse::parse(new_program); + + ast::tasks::the_program = std::unique_ptr{new_ast}; + } + + } // namespace testsuite -- cgit v1.2.3