Index: tests/forall.cfa
===================================================================
--- tests/forall.cfa	(revision 8a972486173f920eea1f1868fff138e1568a8a59)
+++ tests/forall.cfa	(revision 14f6a3cb6ba93c033563d9e2f31b91c9c9f64357)
@@ -10,17 +10,20 @@
 // Created On       : Wed May  9 08:48:15 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  2 15:28:45 2023
-// Update Count     : 38
-//
+// Last Modified On : Sun Feb  5 07:54:43 2023
+// Update Count     : 90
+//
+
+#include <fstream.hfa>
 
 void g1() {
-	forall( T ) T f( T ) {};
-	void f( int ) {};
-	void h( void (*p)(void) ) {};
-
-	int x;
-	void (*y)(void);
-	char z;
-	float w;
+	forall( T ) T f( T p ) { sout | 'f'; return p;  };
+	void f( int p ) { sout | p; };
+	void g( void ) { sout | 'g'; };
+	void h( void (*p)(void) ) { p(); };
+
+	int x = 1;
+	void (*y)(void) = g;
+	char z = 'a';
+	float w = 3.5;
 
 	f( x );
@@ -28,16 +31,21 @@
 	f( z );
 	f( w );
+	h( y );
+	f( y );
 	h( f( y ) );
 }
 
 void g2() {
-	forall( T ) void f( T, T ) {}
-	forall( T, U ) void f( T, U ) {}
+	forall( T ) void f( T, T ) { sout | "fT"; }
+	forall( T, U ) void f( T, U ) { sout | "fTU"; }
 
 	int x;
 	float y;
-	int *z;
-	float *w;
-
+	int * z;
+	float * w;
+
+	f( x, x );
+	f( y, y );
+	f( w, w );
 	f( x, y );
 	f( z, w );
@@ -50,8 +58,13 @@
 
 forall( T )
-void swap( T left, T right ) {
-	T temp = left;
-	left = right;
-	right = temp;
+void swap( T & left, T & right ) {						// by reference
+    T temp = left;
+    left = right;
+    right = temp;
+}
+
+forall( T )
+[ T, T ] swap( T i, T j ) {								// by value
+    return [ j, i ];
 }
 
@@ -72,5 +85,5 @@
 } // sum
 
-forall( T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &,T ); } )
+forall( T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &, T ); } )
 T twice( T t ) {
 	return t + t;
@@ -82,12 +95,17 @@
 }
 
-int fred() {
-	int x = 1, y = 2, a[10];
+void fred() {
+	int x = 1, y = 2, a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 	float f;
 
+	sout | x | y;
 	swap( x, y );
-	twice( x );
+	sout | x | y | nl | swap( x, y );
+	// [ x, y ] = swap( y, x );
+	sout | twice( ' ' ) | ' ' | twice( 0hh ) | twice( 1h ) | twice( 0n ) | twice( 2 )
+		 | twice( 3.2f ) | twice( 3.2 ) | twice( 3.2d ) | twice( 3.2+1.5i ) | twice( x );
 	f = min( 4.0, 3.0 );
-	sum( 10, a );
+	sout | f | min( 4.0, 3.0 );
+	sout | sum( 10, a );
 }
 
@@ -186,8 +204,8 @@
 
 forall( T ) {
-	extern "C" {
+//	extern "C" {
 		struct SS { T t; };
-		T foo( T ) {}
-	}
+		T foo( T p ) { return p; }
+//	}
 }
 
@@ -195,8 +213,9 @@
 W(int,int) w;
 
-int jane() {
+void jane() {
 //	int j = bar( 3, 4 );
 	int k = baz( 3, 4, 5 );
 	int i = foo( 3 );
+	sout | k | i;
 }
 
@@ -211,4 +230,5 @@
 	T t;
 	T t2 = t;
+	sout | &tr | tp;
 }
 
@@ -242,5 +262,8 @@
 
 int main( void ) {
-    #pragma GCC warning "Compiled"                      // force non-empty .expect file, NO TABS!!!
+	g1();
+	g2();
+	fred();
+	jane();
 }
 
