/** ** \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