1 //  { dg-do run }
2 
3 #include "coro.h"
4 
5 struct simple {
6   static inline int alive = 0;
simplesimple7   simple() { ++alive; }
simplesimple8   simple(simple&&) { ++alive; }
~simplesimple9   ~simple() { --alive; }
10 
11   struct promise_type {
get_return_objectsimple::promise_type12     simple get_return_object() { return simple{}; }
return_voidsimple::promise_type13     void return_void() {}
unhandled_exceptionsimple::promise_type14     void unhandled_exception() {}
initial_suspendsimple::promise_type15     auto initial_suspend() noexcept { return coro::suspend_never{}; }
final_suspendsimple::promise_type16     auto final_suspend() noexcept { return coro::suspend_never{}; }
17   };
18 };
19 
20 simple
f()21 f()
22 {
23   co_return;
24 }
25 
main()26 int main() {
27   {
28     f();
29   }
30 
31   if (simple::alive != 0)
32    {
33      PRINTF ("something wrong with dtors: %d\n", simple::alive);
34      abort ();
35    }
36   return 0;
37 }
38