// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++14 -fcoroutines-ts -fsyntax-only -Wall -Wextra -Wuninitialized -fblocks #include "Inputs/std-coroutine.h" using namespace std::experimental; struct A { bool await_ready() { return true; } int await_resume() { return 42; } template <typename F> void await_suspend(F) {} }; struct coro_t { struct promise_type { coro_t get_return_object() { return {}; } suspend_never initial_suspend() { return {}; } suspend_never final_suspend() { return {}; } A yield_value(int) { return {}; } void return_void() {} static void unhandled_exception() {} }; }; coro_t f(int n) { if (n == 0) co_return; co_yield 42; int x = co_await A{}; } template <class Await> coro_t g(int n) { if (n == 0) co_return; co_yield 42; int x = co_await Await{}; } int main() { f(0); g<A>(0); } |