diff options
Diffstat (limited to 'test/SemaCXX/Inputs/std-coroutine.h')
-rw-r--r-- | test/SemaCXX/Inputs/std-coroutine.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/SemaCXX/Inputs/std-coroutine.h b/test/SemaCXX/Inputs/std-coroutine.h new file mode 100644 index 000000000000..7a424f1e99cf --- /dev/null +++ b/test/SemaCXX/Inputs/std-coroutine.h @@ -0,0 +1,37 @@ +// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++14 -fcoroutines-ts -fsyntax-only -Wignored-qualifiers -Wno-error=return-type -verify -fblocks -Wno-unreachable-code -Wno-unused-value +#ifndef STD_COROUTINE_H +#define STD_COROUTINE_H + +namespace std { +namespace experimental { + +template <class Ret, typename... T> +struct coroutine_traits { using promise_type = typename Ret::promise_type; }; + +template <class Promise = void> +struct coroutine_handle { + static coroutine_handle from_address(void *); +}; +template <> +struct coroutine_handle<void> { + template <class PromiseType> + coroutine_handle(coroutine_handle<PromiseType>); + static coroutine_handle from_address(void *); +}; + +struct suspend_always { + bool await_ready() { return false; } + void await_suspend(coroutine_handle<>) {} + void await_resume() {} +}; + +struct suspend_never { + bool await_ready() { return true; } + void await_suspend(coroutine_handle<>) {} + void await_resume() {} +}; + +} // namespace experimental +} // namespace std + +#endif // STD_COROUTINE_H |