// RUN: %clang_cc1 %s -std=c++20 -fsyntax-only -Wno-vla-cxx-extension -verify
#include "Inputs/std-coroutine.h"

struct promise;

struct coroutine : std::coroutine_handle<promise> {
  using promise_type = ::promise;
};

struct promise
{
    coroutine get_return_object();
    std::suspend_always initial_suspend() noexcept;
    std::suspend_always final_suspend() noexcept;
    void return_void();
    void unhandled_exception();
};

coroutine foo(int n) {
  int array[n]; // expected-error {{variable length arrays in a coroutine are not supported}}
  co_return;
}

void lambda() {
  [](int n) -> coroutine {
    int array[n]; // expected-error {{variable length arrays in a coroutine are not supported}}
    co_return;
  }(10);
}
