// { dg-additional-options "-fsyntax-only" }
#include <coroutine>
#include <vector>
template <typename> struct promise {
  struct final_awaitable {
    bool await_ready() noexcept;
    template <typename Promise>
    std::coroutine_handle<>
        await_suspend(std::coroutine_handle<Promise>) noexcept;
    void await_resume() noexcept;
  };
  auto get_return_object() {
    return std::coroutine_handle<promise>::from_promise(*this);
  }
  auto initial_suspend() { return std::suspend_always(); }
  auto final_suspend() noexcept { return true; }
  void unhandled_exception();
};
template <typename T> struct task {
  using promise_type = promise<T>;
  task(std::coroutine_handle<promise<T>>);
  bool await_ready();
  std::coroutine_handle<> await_suspend(std::coroutine_handle<>);
  T await_resume();
};
task<std::vector<int>> foo() { // { dg-error {awaitable type 'bool' is not a structure} }
  while ((co_await foo()).empty())
    ;
}
