// PR c++/91360 - Implement C++20 P1143R2: constinit
// { dg-do compile { target c++20 } }
// Test basic usage of 'constinit'.

const char *g() { return "dynamic init"; }
constexpr const char *f(bool p) { return p ? "constant init" : g(); } // { dg-error "call to non-.constexpr. function" }

constinit const char *c = f(true);
constinit const char *d = f(false); // { dg-error "variable .d. does not have a constant initializer" }
// { dg-message "in .constexpr. expansion of" "" { target *-*-* } .-1 }
static constinit const char *e = f(true);

constexpr int foo(int x) { return x; }
constinit int i = foo(42);
constinit int j // { dg-error "variable .j. does not have a constant initializer" }
  = foo(i); // { dg-error "not usable in a constant expression" }

int y = 42;
constinit int x // { dg-error "variable .x. does not have a constant initializer" }
  = y; // { dg-error "not usable in a constant expression" }

constinit int z;
const constinit unsigned cst = 1u;

void
fn ()
{
  static constinit int m = foo(42);
  static constinit int n // { dg-error "variable .n. does not have a constant initializer" }
    = foo(m); // { dg-error "not usable in a constant expression" }

  // Make sure we can still modify constinit variables.
  c = "foo";
  i = 10;
  m = 90;
  // ... unless they're 'const'.
  cst *= 2; // { dg-error "assignment of read-only variable" }
}
