xref: /llvm-project/clang/test/SemaCXX/coroutine-no-move-ctor.cpp (revision fa0d4e1f12a3f69dd0afb07c0928c867ab921537)
1 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++20 -fsyntax-only -verify
2 // expected-no-diagnostics
3 
4 #include "Inputs/std-coroutine.h"
5 
6 class invoker {
7 public:
8   class invoker_promise {
9   public:
get_return_object()10     invoker get_return_object() { return invoker{}; }
initial_suspend()11     auto initial_suspend() { return std::suspend_never{}; }
final_suspend()12     auto final_suspend() noexcept { return std::suspend_never{}; }
return_void()13     void return_void() {}
unhandled_exception()14     void unhandled_exception() {}
15   };
16   using promise_type = invoker_promise;
invoker()17   invoker() {}
18   invoker(const invoker &) = delete;
19   invoker &operator=(const invoker &) = delete;
20   invoker(invoker &&) = delete;
21   invoker &operator=(invoker &&) = delete;
22 };
23 
f()24 invoker f() {
25   co_return;
26 }
27