bool frame_live = false;
bool promise_live = false;
-bool gro_live = false;
struct X {};
int Y_live = 0;
+int task_live = 0;
struct Y
{
#if GET_RETURN_OBJECT_THROWS
throw X{};
#endif
- bool gro_live = true;
return task{};
}
}
};
- task() { std::puts("task()"); }
- ~task() { std::puts("~task()"); }
- task(task&&) { std::puts("task(task&&)"); }
+ task() { std::puts("task()"); task_live++; }
+ ~task() { std::puts("~task()"); task_live--; }
+ task(task&&) { std::puts("task(task&&)"); task_live++; }
};
-task f(Y Val) {
+task f(Y Val __attribute__((__unused__))) {
co_return;
}
f(Val);
} catch (X) {
std::puts("caught X");
- if (gro_live)
- std::puts("gro live"), failed = true;
+ if (task_live)
+ std::puts("task live"), failed = true;
if (promise_live)
std::puts("promise live"), failed = true;
if (frame_live)