### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
// Begin of Foo (from "<...>/yield.hlt")
// Compiled by HILTI version X.X.X

#include <hilti/rt/compiler-setup.h>

#include <hilti/rt/libhilti.h>

extern uint64_t __hlt_hlto_scope;

namespace __hlt::Foo {
    extern auto test(const std::string& x) -> std::string;
}

namespace hlt::Foo {
    extern auto test(const std::string& x) -> ::hilti::rt::Resumable;
}

namespace __hlt::Foo {
    extern void __register_module();
}

HILTI_PRE_INIT(__hlt::Foo::__register_module)

extern void __hlt::Foo::__register_module() {
    ::hilti::rt::Library::setScope(&__hlt_hlto_scope);
    ::hilti::rt::detail::registerModule({ "Foo", __hlt_hlto_scope, nullptr, nullptr, nullptr, nullptr});
}

extern auto __hlt::Foo::test(const std::string& x) -> std::string {
    ::hilti::rt::detail::checkStack();
      __location__("<...>/yield.hlt:12:5-12:49");
    ::hilti::rt::print("HILTI - 1 - argument: "s, &::hilti::rt::type_info::string, ::hilti::rt::Bool(false));
      __location__("<...>/yield.hlt:13:5-13:19");
    ::hilti::rt::print(x, &::hilti::rt::type_info::string, ::hilti::rt::Bool(true));
      __location__("<...>/yield.hlt:15:5-15:10");
    ::hilti::rt::detail::yield();
      __location__("<...>/yield.hlt:16:5-16:29");
    ::hilti::rt::print("HILTI - 2"s, &::hilti::rt::type_info::string, ::hilti::rt::Bool(true));
      __location__("<...>/yield.hlt:17:5-17:10");
    ::hilti::rt::detail::yield();
      __location__("<...>/yield.hlt:18:5-18:29");
    ::hilti::rt::print("HILTI - 3"s, &::hilti::rt::type_info::string, ::hilti::rt::Bool(true));
      __location__("<...>/yield.hlt:19:5-19:10");
    ::hilti::rt::detail::yield();
      __location__("<...>/yield.hlt:20:5-20:32");
    ::hilti::rt::print("HILTI - Done"s, &::hilti::rt::type_info::string, ::hilti::rt::Bool(true));
      __location__("<...>/yield.hlt:22:5-22:25");
    return "test-result"s;
}

extern auto hlt::Foo::test(const std::string& x) -> ::hilti::rt::Resumable {
    auto args = std::make_tuple(::hilti::rt::resumable::detail::copyArg(x));
    auto args_on_heap = std::make_shared<decltype(args)>(std::move(args));
    auto cb = [args_on_heap = std::move(args_on_heap)](::hilti::rt::resumable::Handle* r) -> ::hilti::rt::any {
        return __hlt::Foo::test(std::get<0>(*args_on_heap));
    };

    auto r = std::make_unique<::hilti::rt::Resumable>(std::move(cb));
    r->run();
    return std::move(*r);
}

