Index: tests/designations.cfa
===================================================================
--- tests/designations.cfa	(revision c3d0182ad882b6ff57011d71000ba4e73314ce82)
+++ tests/designations.cfa	(revision 2e0bb92d37a3b2b52da787d65488c0471a8bf5ae)
@@ -10,11 +10,10 @@
 // Created On       : Thu Jun 29 15:26:36 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Oct 13 11:53:16 2024
-// Update Count     : 31
-//
-
-#include <fstream.hfa>
+// Last Modified On : Tue Jan 28 21:49:50 2025
+// Update Count     : 82
+//
 
 // Note: this test case has been crafted so that it compiles with both cfa and with gcc without any modifications.
+#include <stdio.h>
 #ifdef __cforall
 #define AT @
@@ -23,7 +22,13 @@
 #endif
 
+#pragma GCC diagnostic ignored "-Wmissing-braces"
+#pragma GCC diagnostic ignored "-Woverride-init"
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+
+
 const int indentAmt = 2;
 void indent( int level ) {
-	sout | wd( level, "" ) | nonl;
+	printf( "%*s", level, "" );
 }
 
@@ -35,5 +40,5 @@
 void printA( struct A a, int level ) {
 	indent( level );
-	sout | "(A){ " | a.x | a.y | a.ptr | " }";
+	printf( "(A){ %d %d %p }\n", a.x, a.y, a.ptr );
 }
 
@@ -44,9 +49,9 @@
 void printB( struct B b, int level ) {
 	indent( level );
-	sout | "(B){";
+	printf( "(B){\n" );
 	printA( b.a0, level+indentAmt );
 	printA( b.a1, level+indentAmt );
 	indent( level );
-	sout | "}";
+	printf( "}\n" );
 }
 
@@ -58,10 +63,10 @@
 void printC( struct C c, int level ) {
 	indent( level );
-	sout | "(C){";
+	printf( "(C){\n" );
 	indent( level+indentAmt );
-	sout | "(int[]{ " | c.arr[0] | c.arr[1] | c.arr[2] | " }";
+	printf( "(int[]{ %d %d %d }\n", c.arr[0], c.arr[1], c.arr[2] );
 	printB( c.b, level+indentAmt );
 	indent( level );
-	sout | "}";
+	printf( "}\n" );
 }
 
@@ -74,5 +79,5 @@
 void printD( struct D d, int level ) {
 	indent( level);
-	sout | "(D){ " | d.x | "}";
+	printf( "(D){ %d }\n", d.x );
 }
 
@@ -96,5 +101,5 @@
 	} m;
 };
-struct Fred s1 AT= { .m.j = 3 };
+struct Fred s1 AT= { .m.j = { 3 } };
 struct Fred s2 AT= { .i = { [2] = 2 } };
 
@@ -124,9 +129,9 @@
 #endif
 
-	sout | "=====A=====";
+	printf( "=====A=====\n" );
 	printA( y0, 0 );
 	printA( y1, 0 );
 	printA( y2, 0 );
-	sout | "=====A=====" | nl | nl;
+	printf( "=====A=====\n\n" );
 
 	// initialize only first element (z0.a.x), leaving everything else default-initialized (zero), no nested curly-braces
@@ -167,5 +172,5 @@
 	};
 
-	sout | "=====B=====";
+	printf( "=====B=====\n" );
 	printB( z0, 0 );
 	printB( z1, 0 );
@@ -174,5 +179,5 @@
 	printB( z5, 0 );
 	printB( z6, 0 );
-	sout | "=====B=====" | nl | nl;
+	printf( "=====B=====\n\n" );
 
 	// TODO: what about extra things in a nested init? are empty structs skipped??
@@ -185,7 +190,7 @@
 	};
 
-	sout | "=====C=====";
+	printf( "=====C=====\n" );
 	printC( c1, 0 );
-	sout | "=====C=====" | nl | nl;
+	printf( "=====C=====\n\n" );
 
 #if ERROR
@@ -211,4 +216,5 @@
 	// array designation
 	int i[2] = { [1] = 3 };
+
 	// allowed to have 'too many' initialized lists - essentially they are ignored.
 	int i1 = { 3 };
@@ -241,10 +247,10 @@
 	};
 
-	sout | "=====E=====";
+	printf( "=====E=====\n" );
 	printA( e0.a, 0 );
 	printA( e1.a, 0 );
 	printA( e2.a, 0 );
 	printB( e3.b, 0 );
-	sout | "=====E=====" | nl | nl;
+	printf( "=====E=====\n\n" );
 
 	// special case of initialization: char[] can be initialized with a string literal
@@ -254,4 +260,5 @@
 	const char c3[] = { 'a', 'b', 'c' };
 	const char c4[][2] = { { 'a', 'b' }, { 'c', 'd'}, { 'c', 'd'} };
+	const char ch = c4[0][0];
 
 	// more cases
@@ -263,5 +270,5 @@
 	union foo { int i; double d; };
 	union foo f = { .d = 4 };
-	int v1, v2, v4;
+	int v1 = 0, v2 = 0, v4 = 0;
 	int w[6] = { [1] = v1, v2, [4] = v4 };
 	int whitespace[256] = { [' '] = 1, ['\t'] = 1, ['\v'] = 1, ['\f'] = 1, ['\n'] = 1, ['\r'] = 1 };
