Index: src/Tests/SynTree/Constant0-1.c
===================================================================
--- src/Tests/SynTree/Constant0-1.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/Constant0-1.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -11,4 +11,6 @@
 int 0, 1;
 const int 0, 1;
+int (0), (1);
+int ((0)), ((1));
 static const int 0, 1;
 struct { int i; } 0;
@@ -18,8 +20,12 @@
 // pointer
 
-int 1, * 0;
-int (1), ((1)), * (0), (* 0), ((* 0));
-int * const (0), (* const 0), ((* const 0));
-struct { int i; } * 0;
+int *0, *1;
+int *(0), *(1);
+int (*0), (*1);
+int ((*0)), ((*1));
+int * const (0), * const 1;
+int (* const 0), (* const 1);
+int ((* const 0)), ((* const 1));
+struct { int i; } *0;
 
 // Cforall style
@@ -34,2 +40,7 @@
 static const * int x, 0;
 const * * int x, 0;
+
+int main() {
+    int 1, * 0;
+    * int x, 0;
+}
Index: src/Tests/SynTree/DeclarationSpecifier.c
===================================================================
--- src/Tests/SynTree/DeclarationSpecifier.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/DeclarationSpecifier.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -11,4 +11,5 @@
 const short volatile int static x7;
 short int volatile static const x8;
+static short int volatile static const x9;		// duplicate static
 
 const volatile struct { int i; } x10;
@@ -20,4 +21,6 @@
 struct { int i; } const static volatile x16;
 struct { int i; } const volatile static x17;
+struct { int i; } const static volatile static x18;	// duplicate static
+struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
 
 const Int volatile x20;
@@ -29,4 +32,5 @@
 const volatile Int static x26;
 Int volatile static const x27;
+static Int volatile static const x28;			// duplicate static
 
 const volatile struct { Int i; } x29;
Index: src/Tests/SynTree/Forall.c
===================================================================
--- src/Tests/SynTree/Forall.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/Forall.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -9,8 +9,8 @@
 
 context sumable( type T ) {
-    const T 0;
-    T ?+?(T, T);
-    T ?++(T);
-    [T] ?+=?(T,T);
+	const T 0;
+	T ?+?(T, T);
+	T ?++(T);
+	[T] ?+=?(T,T);
 };
 
@@ -32,5 +32,5 @@
 	int i;
 	for ( i = 0; i < n; i += 1 )
-	    total = total + a[i];
+		total = total + a[i];
 	return total;
 }
@@ -41,12 +41,17 @@
 }
 
+forall( type T | { const T 0; int ?!=?(T, T); int ?<?(T, T); } )
+T min( T t1, T t2 ) {
+	return t1 < t2 ? t1 : t2;
+}
+
 int main() {
-    int x = 1, y = 2, a[10];
-    float f;
+	int x = 1, y = 2, a[10];
+	float f;
 
-    swap( x, y );
-    twice( x, y );
-    f = min( 4.0, 3.0 );
-    sum( 10, a );
+	swap( x, y );
+	twice( x );
+	f = min( 4.0, 3.0 );
+	sum( 10, a );
 }
 
Index: src/Tests/SynTree/Functions.c
===================================================================
--- src/Tests/SynTree/Functions.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/Functions.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -152,5 +152,5 @@
 typedef int T;
 
-int f( T (T), T T ) {
+int f( T (*f), T t ) {
 	T (T);
 }
Index: src/Tests/SynTree/Initialization.c
===================================================================
--- src/Tests/SynTree/Initialization.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/Initialization.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -1,5 +1,5 @@
 // Cforall extensions
 
-int * x21 = 0, x22 = 0;
+int * x11 = 0, x12 = 0;
 int * x21 = 0, x22 = 0;
 
@@ -27,4 +27,14 @@
 };
 
+struct point { int x; int z; struct {int y1, y2, y3;} y; int w;};
+struct quintet { int v, w, x, y, z;};
+
+int main() {
+	struct point p1 = { x : 3 };
+	struct point p2 = { 3, 4 };
+	struct point p3 = { .[x,z] : 5, y : { .[y3,y1] : 6, 17 } };
+	struct point p4 = { w : 5, 4 };
+}
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/Tests/SynTree/Scope.c
===================================================================
--- src/Tests/SynTree/Scope.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/Scope.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -7,5 +7,5 @@
 y q;
 
-y w(y y, u v) {
+y w( y y, u v ) {
 	type x | { x t(u); };
 	u u = y;
@@ -15,12 +15,10 @@
 y p;
 
-context has_u( type z )
-{
+context has_u( type z ) {
 	z u(z);
 };
 
 forall( type t | has_u( t ) )
-y q( t the_t )
-{
+y q( t the_t ) {
 	t y = u( the_t );
 }
@@ -29,9 +27,7 @@
 	int y;
 	typedef char x;
-
 	{
 		x y;
 		typedef x z;
-
 		{
 			z x;
@@ -39,8 +35,6 @@
 			y z = x;
 		}
-
 		z x = y;
 	}
-
 	x q = y;
 }
@@ -56,6 +50,6 @@
 }
 
-y q( i )
-    int i;
+y q( i )												/* K&R style */
+	int i;
 {
 	switch ( i ) {
Index: src/Tests/SynTree/Tuple.c
===================================================================
--- src/Tests/SynTree/Tuple.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/Tuple.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -1,5 +1,5 @@
 int f( int, int );
 int g( int, int, int );
-static [ int, int, int, int ] h( int a, int b, * int c, [] char d );
+static [ int, int *, * int, int ] h( int a, int b, * int c, [] char d );
 
 struct inner {
@@ -30,4 +30,5 @@
 
 	[ x, y, z ] = [ p, f( 17 ), 3 ];
+	[ x, y, z ] = ([short, unsigned int, [int, int]])([ p, f( 17 ), 3 ]);
 	r = [ x, y, z ];
 }
@@ -40,23 +41,26 @@
 	f( t1 );
 	g( t1, 3 );
-	[ 3,5 ];
-	[ a,b ] = 3;
-	[ a,b ] = [ 4.6 ];
-	[ a,b ] = [ c,d ] = [ 3,5 ];
-	[ a,b,[ c ] ] = [ 2,[ a,b ] ];
-	[ a,b ] = 3 > 4 ? [ b,6 ] : [ 7,8 ];
 
-	t1 = [ a,b ];
-	t1 = t2 = [ a,b ];
-	[ a,b ] = [ c,d ] = d += c += 1;
-	[ a,b ] = [ c,d ] = t1;
-	[ a,b ] = t1 = [ c,d ];
-	[ a,b ] = t1 = t2 = [ c,d ];
-	t1 = [ 3,4 ] = [ 3,4 ] = t1 = [ 3,4 ];
+	[ , , , ];						/* empty tuple */
+	[ 3, 5 ];
+	[ a, b ] = 3;
+	[ a, b ] = [ 4.6 ];
+	[ a, b ] = [ c, d ] = [ 3, 5 ];
+	[ a, b, [ c ] ] = [ 2,[ a, b ] ];
+	[ a, b ] = 3 > 4 ? [ b, 6 ] : [ 7, 8 ];
+
+	t1 = [ a, b ];
+	t1 = t2 = [ a, b ];
+	[ a, b ] = [ c, d ] = d += c += 1;
+	[ a, b ] = [ c, d ] = t1;
+	[ a, b ] = t1 = [ c, d ];
+	[ a, b ] = t1 = t2 = [ c, d ];
+	t1 = [ 3, 4 ] = [ 3, 4 ] = t1 = [ 3, 4 ];
 
 	s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
 	s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, 0, "abc" );
-	sp->[ f4,f1 ] = sp->[ f1,f4 ];
-	printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3,f2 ], f1 ] );
+	[ a, , b, ] = h( 3, 3, 0, "abc" );			/* ignore some results */
+	sp->[ f4,f1 ] = sp->[ f1, f4 ];
+	printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3, f2 ], f1 ] );
 	rc = 0;
 }
Index: src/Tests/SynTree/TypeGenerator.c
===================================================================
--- src/Tests/SynTree/TypeGenerator.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/TypeGenerator.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -9,5 +9,11 @@
 [int] h( * List(int) p ); // new declaration syntax
 
-struct(type T | addable(T) ) node { T data; struct(T) node *next; };
+struct(type T) S1;			// forward definition
+struct(type T) S1 { T i; };		// actual definition
+struct(int) S1 v1, *p;			// expansion and instantiation
+struct(type T)(int) S2 { T i; } v2;	// actual definition, expansion and instantiation
+struct(type T)(int) { T i; } v2;	// anonymous actual definition, expansion and instantiation
+
+struct( type T | addable(T) ) node { T data; struct(T) node *next; };
 type List(type T) = struct(T) node *;
 List(int) my_list;
Index: src/Tests/SynTree/Typedef.c
===================================================================
--- src/Tests/SynTree/Typedef.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/Typedef.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -2,10 +2,10 @@
 
 void f( void ) {
-	int T( T );
-	T( 3 );
+    int T( T );
+    T( 3 );
 }
 
 struct {
-	T (T);
+    T (T);
 } fred = { 3 };
 
@@ -14,15 +14,17 @@
 
 int g(void) {
-	double a;
+    double a;
 }
 a c;
 
-// typedef x = 3, y = 3;  /* GCC */
+typedef typeof(3) x, y;  // GCC
 
-// x p;
-// y q;
+x p;
+y q;
 
 int main() {
-//    typedef z = p = 3;
+    typedef typeof(3) z, p;
+    z w;
+    p x;
 }
 
@@ -30,5 +32,5 @@
 
 typedef [10] * int arrayOf10Pointers;
-arrayOf10Pointers x;
+arrayOf10Pointers array;
 typedef const * int constantPointer;
 typedef * [ int ]( [] int ) funcPtr;
Index: src/Tests/SynTree/VariableDeclarator.c
===================================================================
--- src/Tests/SynTree/VariableDeclarator.c	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/Tests/SynTree/VariableDeclarator.c	(revision 0b2961f2b406f56226db579dae86d2be974d1711)
@@ -40,12 +40,12 @@
 int * const * const (f34[10]);
 
-int (*f35[]);
-int (*f36[10]);
-int (**f37[]);
-int (**f38[10]);
-int (* const *f39[]);
-int (* const *f40[10]);
-int (* const * const f41[]);
-int (* const * const f42[10]);
+int (*f35)[];
+int (*f36)[10];
+int (**f37)[];
+int (**f38)[10];
+int (* const *f39)[];
+int (* const *f40)[10];
+int (* const * const f41)[];
+int (* const * const f42)[10];
 
 int f43[][3];
@@ -108,6 +108,49 @@
 // Cforall extensions
 
-* [20] double z;
-[20] * char w;
+* int cf3;
+* * int cf4;
+* const * int cf5;
+const * const * int cf6;
+
+[] int cf15;
+[10] int cf16;
+
+[] * int cf19;
+[10] * int cf20;
+int **cf21[];
+[10] * * int cf22;
+[] * const * int cf23;
+[10] * const * int cf24;
+[] const * const * int cf25;
+[10] const * const * int cf26;
+
+* [] int cf35;
+* [10] int cf36;
+* * [] int cf37;
+* * [10] int cf38;
+* const * [] int cf39;
+* const * [10] int cf40;
+const * const * [] int cf41;
+const * const * [10] int cf42;
+
+[][3] int cf43;
+[3][3] int cf44;
+
+[][3] * int cf49;
+[3][3] * int cf50;
+[][3] * * int cf51;
+[3][3] * * int cf52;
+[][3] const * int cf53;
+[3][3] * const * int cf54;
+[][3] const * const * int cf55;
+[3][3] const * const * int cf56;
+
+[int] cf65(int);
+[int] cf66(int);
+
+[* int] cf67(int);
+[* * int] cf68(int);
+[const * * int] cf69(int);
+[const * const * int] cf70(int);
 
 // function pointer
