# @TEST-GROUP: no-jit # @TEST-EXEC: ${HILTIC} -g -P "" -o Foo.h %INPUT # @TEST-EXEC: ${HILTIC} -g -c -D compiler -o foo.cc %INPUT # @TEST-EXEC: ${HILTIC} -g -l -D compiler -o linker.cc foo.cc # @TEST-EXEC: cxx-compile -c -o foo.o foo.cc # @TEST-EXEC: cxx-compile -c -o linker.o linker.cc # @TEST-EXEC: cxx-compile -c -o driver.o driver.cc # @TEST-EXEC: cxx-link -o a.out foo.o linker.o driver.o # @TEST-EXEC: ./a.out >output # @TEST-EXEC: btest-diff output module Foo { import hilti; function extern string test(string x) { hilti::print("HILTI - 1 - argument: ", False); hilti::print(x); yield; hilti::print("HILTI - 2"); yield; hilti::print("HILTI - 3"); yield; hilti::print("HILTI - Done"); return "test-result"; } } @TEST-START-FILE driver.cc #include #include "Foo.h" extern "C" int HILTI_EXPORT hilti_main() { // Point of entry for JIT auto r = hlt::Foo::test("argument"); while ( ! r ) { std::cout << "suspended, resuming" << std::endl; r.resume(); } std::cout << "Done, result: " << r.get() << std::endl; return 0; } int main(int argc, char** argv) { hilti::rt::init(); hilti_main(); hilti::rt::done(); return 0; } @TEST-END-FILE