blob: 8304344c826a439b793c1eab7ccc3548fb6ea50e [file] [log] [blame]
// { dg-additional-options "-std=c++17 -w" }
#include "coro.h"
class await {
public:
class promise_type {
public:
std::suspend_always initial_suspend() const noexcept { return {}; }
std::suspend_always final_suspend() const noexcept { return {}; }
void unhandled_exception() noexcept { }
await get_return_object() { return await{}; }
void return_void() {}
};
bool await_ready() const noexcept { return false; }
bool await_suspend(std::coroutine_handle<>) noexcept {return true;}
void await_resume() { }
};
class mycoro {
public:
class promise_type {
public:
std::suspend_always initial_suspend() const noexcept { return {}; }
std::suspend_always final_suspend() const noexcept { return {}; }
void unhandled_exception() noexcept { }
mycoro get_return_object() { return mycoro{}; }
void return_void() {}
};
};
mycoro foo(await awaitable) {
co_return co_await awaitable;
}
mycoro bar()
{
auto t = [&]() -> await { co_return; }();
return foo (t);
}