/* Deviance Test 4.6.4.1:  Ensure illegal array initializations are detected */

int printf(const char *, ...);

static int i1 [3] = { 1, 2, 3, 4 };                    /* too many elements */
static long L1 [4] = { 1, 2, 3, 4, 5, 5, 7 };
static double d1 [3] = { 1.0, 2.0, 3.0, 4.0 };
static struct S1 { int i; float f; } s1 [2] = { {2, 1.0}, {3, 2.0},
                                                {4, 3.0}, {5, 4.0} };

char ch1 [2] = "oh, what a beautiful baby!!";
comp c1 [3] = { 1, 2, 3, 4, 5, 6 };
float f1 [1] = { 0, 0, 0, 0, 0, 0 };

int   i2 = 3;
float f2 = 3.0;

                                                       /* non-constant values */
static short i3 [] = { i2 * 2, i2 / 2 };
static double d3 [3] = { 3.0, (double) f2 };
static struct S1 s2 [2] = { i3 [0], f2 };

unsigned int i4 [2] = { i3 [1], i2 };
unsigned long L2 [4] = { (unsigned long) f2 + 3 };

int main (void)
  {
   int i5 [7] = { 14, 15, 16, 17, 18, 19, 20, 21 };    /* too many elements */
   float f5 [3] = { 1.1, 1.1, 1.1, 1.1, 4.4 };
   char ch [5] = "abcde";                              /* no room for ending */
                                                       /*   null             */

   double d5 [3] = { (double) (i2 * 2.3) };            /* non-constant values */
   struct S1 s5 [2] = { i2 - (i2 + 2), f2 / 7.2 };

   printf ("Failed Deviance Test 4.6.4.1\n");
  }
