1 //  { dg-do compile }
2 //  Test we create co_await_expr with dependent type rather than type of awaitable class
3 
4 #include "../coro.h"
5 #include "../coro1-ret-int-yield-int.h"
6 #include <chrono>
7 
8 struct TestAwaiter {
9     int recent_test;
TestAwaiterTestAwaiter10     TestAwaiter(int test) : recent_test{test} {}
await_readyTestAwaiter11     bool await_ready() { return true; }
await_suspendTestAwaiter12     void await_suspend(coro::coroutine_handle<>) {}
await_resumeTestAwaiter13     int await_resume() { return recent_test;}
return_valueTestAwaiter14     void return_value(int x) { recent_test = x;}
15 };
16 
17 template <typename Rep, typename Period>
test_temparg(std::chrono::duration<Rep,Period> dur)18 coro1 test_temparg (std::chrono::duration<Rep, Period> dur)
19 {
20        auto sum = co_await TestAwaiter(1);
21        if (!sum)
22 	 dur.count();
23        co_return 0;
24 }
25