(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
ext/
flexary7.C
// PR c++/68613 - initializer-string for array of chars is too long error
// on flexible array member
// { dg-do compile }
// { dg-options "-Wpedantic -Wno-error=pedantic" }

struct FlexChar {
    int n;
    char a[];       // { dg-warning "10:ISO C\\+\\+ forbids flexible array member" }
};

struct FlexChar ac =
  { 4, { "abc" } }; // { dg-warning "initialization of a flexible array member" }


#if !__cplusplus
typedef __WCHAR_TYPE__ wchar_t;
#endif

struct FlexWchar {
    int n;
    wchar_t a[];    // { dg-warning "13:ISO C\\+\\+ forbids flexible array member" }
};

struct FlexWchar awc =
  { 3, { L"ab" } }; // { dg-warning "initialization of a flexible array member" }


struct FlexInt {
    int n;
    int a[];        // { dg-warning "9:ISO C\\+\\+ forbids flexible array member" }
};

// Verify that no warning is issued for the case when a flexible array
// member is not initialized (i.e., that a -Wmissing-field-initializer
// isn't issued) because such arrays need not have any elements.
struct FlexInt ai0 =
  { 0 };

struct FlexInt ai0_ =
  { 0, { } };      // { dg-warning "initialization of a flexible array member" }

struct FlexInt ai2 =
  { 2, { 1, 2 } }; // { dg-warning "initialization of a flexible array member" }


#if __cplusplus

template <class T>
struct FlexT {
    int n;
    T a[];          // { dg-warning "7:ISO C\\+\\+ forbids flexible array member" }
};

struct FlexT<char> atc =
  { 4, { "abc" } }; // { dg-warning "initialization of a flexible array member" }

#endif