Index: src/examples/fwrite.c
===================================================================
--- src/examples/fwrite.c	(revision c77fd8be5ec10e874c647e1154739966d1debc6c)
+++ 	(revision )
@@ -1,27 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// fwrite.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:14:12 2015
-// Update Count     : 1
-//
-
-extern "C" {
-	#include <stdio.h>
-}
-
-int main() {
-	fwrite( "test\n", 5, 1, stdout );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fwrite.c" //
-// End: //
Index: src/examples/identity.c
===================================================================
--- src/examples/identity.c	(revision c77fd8be5ec10e874c647e1154739966d1debc6c)
+++ 	(revision )
@@ -1,39 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// identity.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:15:08 2016
-// Update Count     : 13
-//
-
-#include <fstream>
-
-forall( otype T )
-T identity( T t ) {
-	return t;
-}
-
-int main() {
-	sout | "char\t\t\t"					| identity( 'z' ) | endl;
-	sout | "signed int\t\t"				| identity( 4 ) | endl;
-	sout | "unsigned int\t\t"			| identity( 4u ) | endl;
-	sout | "signed long int\t\t" 		| identity( 4l ) | endl;
-	sout | "unsigned long int\t" 		| identity( 4ul ) | endl;
-	sout | "signed long long int\t"		| identity( 4ll ) | endl;
-	sout | "unsigned long long int\t"	| identity( 4ull ) | endl;
-	sout | "float\t\t\t" 				| identity( 4.1f ) | endl;
-	sout | "double\t\t\t"				| identity( 4.1 ) | endl;
-	sout | "long double\t\t"			| identity( 4.1l ) | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa identity.c" //
-// End: //
Index: src/tests/.expect/identity.txt
===================================================================
--- src/tests/.expect/identity.txt	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
+++ src/tests/.expect/identity.txt	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
@@ -0,0 +1,13 @@
+char			z
+signed int		4
+unsigned int		4
+signed long int		4
+unsigned long int	4
+signed long long int	4
+unsigned long long int	4
+float			4.1
+double			4.1
+long double		4.1
+float _Complex		-4.1-2i
+double _Complex		-4.1-2i
+long double _Complex	-4.1-2i
Index: src/tests/.expect/io.txt
===================================================================
--- src/tests/.expect/io.txt	(revision c77fd8be5ec10e874c647e1154739966d1debc6c)
+++ src/tests/.expect/io.txt	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
@@ -4,4 +4,16 @@
 123
 
+x (1 x [2 x {3 x =4 x $5 x £6 x ¥7 x ¡8 x ¿9 x «10
+1, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x
+x`1`x'2'x"3"x:4:x 5 x	6	x
+7
+x
+8
+x
+9
+x
+10
+x
+x ( 1 ) x 2 , x 3 :x: 4
 A 
 1 2 3 4 5 6 7 8
@@ -18,14 +30,18 @@
 abc, $xyz
 
-v(27 v[27 v{27 $27 =27 £27 ¥27 ¡27 ¿27 «27
-25, 25. 25: 25; 25! 25? 25% 25¢ 25» 25) 25] 25}
-25'27 25`27 25"27 25 27 25
-27 25
-27 25
-27 25	27 25
-27
+1, 2, 3, 4
+1, $2, $3 ", $"
+1 2 3 " "
+ 1 2 3
+12 3
+123
+1 23
+1 2 3
+1 2 3 4 " "
+1, 2, 3, 4 ", "
+1, 2, 3, 4
 3, 4, a, 7.2
 3, 4, a, 7.2
 3 4 a 7.2
- 3 4 a 7.234a7.2 3 4 a 7.2
+ 3 4 a 7.234a7.23 4 a 7.2
 3-4-a-7.2^3^4-3-4-a-7.2
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision c77fd8be5ec10e874c647e1154739966d1debc6c)
+++ src/tests/Makefile.am	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 09:08:15 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Thu May 25 14:39:15 2017
-## Update Count     : 43
+## Last Modified On : Thu Jun  8 07:41:43 2017
+## Update Count     : 44
 ###############################################################################
 
@@ -20,7 +20,7 @@
 
 if BUILD_CONCURRENCY
-concurrent=yes
-quick_test+= coroutine thread monitor
-concurrent_test=coroutine thread monitor multi-monitor sched-int-barge sched-int-block sched-int-disjoint sched-int-wait sched-ext sched-ext-multi preempt
+concurrent = yes
+quick_test += coroutine thread monitor
+concurrent_test = coroutine thread monitor multi-monitor sched-int-barge sched-int-block sched-int-disjoint sched-int-wait sched-ext sched-ext-multi preempt
 else
 concurrent=no
@@ -57,34 +57,38 @@
 	@+python test.py --debug=${debug} --concurrent=${concurrent} ${concurrent_test}
 
-.dummy : .dummy.c
+.dummy : .dummy.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${BUILD_FLAGS} -XCFA -n ${<} -o ${@}				#don't use CFLAGS, this rule is not a real test
 
-dtor-early-exit-ERR1: dtor-early-exit.c
+
+% : %.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${CFLAGS} ${<} -o ${@}
+
+dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
-dtor-early-exit-ERR2: dtor-early-exit.c
+dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
 
-declarationSpecifier: declarationSpecifier.c
+declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-gccExtensions : gccExtensions.c
+gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-extension : extension.c
+extension : extension.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-attributes : attributes.c
+attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-KRfunctions : KRfunctions.c
+KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-gmp : gmp.c
+gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -lgmp ${<} -o ${@}
 
-memberCtors-ERR1: memberCtors.c
+memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
-completeTypeError : completeTypeError.c
+completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision c77fd8be5ec10e874c647e1154739966d1debc6c)
+++ src/tests/Makefile.in	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
@@ -661,35 +661,38 @@
 	@+python test.py --debug=${debug} --concurrent=${concurrent} ${concurrent_test}
 
-.dummy : .dummy.c
+.dummy : .dummy.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${BUILD_FLAGS} -XCFA -n ${<} -o ${@}				#don't use CFLAGS, this rule is not a real test
 
-dtor-early-exit-ERR1: dtor-early-exit.c
+% : %.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${CFLAGS} ${<} -o ${@}
+
+dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
-dtor-early-exit-ERR2: dtor-early-exit.c
+dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
 
-declarationSpecifier: declarationSpecifier.c
+declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-gccExtensions : gccExtensions.c
+gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-extension : extension.c
+extension : extension.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-attributes : attributes.c
+attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-KRfunctions : KRfunctions.c
+KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
 
-gmp : gmp.c
+gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -lgmp ${<} -o ${@}
 
-memberCtors-ERR1: memberCtors.c
+memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
-completeTypeError : completeTypeError.c
+completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
 
Index: src/tests/coroutine.c
===================================================================
--- src/tests/coroutine.c	(revision c77fd8be5ec10e874c647e1154739966d1debc6c)
+++ src/tests/coroutine.c	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
@@ -1,43 +1,61 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// fibonacci.c -- 
+// 
+// Author           : Thierry Delisle
+// Created On       : Thu Jun  8 07:29:37 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jun  8 07:37:12 2017
+// Update Count     : 5
+// 
+
 #include <fstream>
 #include <coroutine>
 
 coroutine Fibonacci {
-      int fn; // used for communication
+	int fn;						// used for communication
 };
 
-void ?{}(Fibonacci* this) {
-      this->fn = 0;
+void ?{}( Fibonacci * this ) {
+	this->fn = 0;
 }
 
-void main(Fibonacci* this) {
-      int fn1, fn2; 		// retained between resumes
-      this->fn = 0;
-      fn1 = this->fn;
-      suspend(); 		// return to last resume
+void main( Fibonacci * this ) {
+	int fn1, fn2;					// retained between resumes
+	this->fn = 0;					// case 0
+	fn1 = this->fn;
+	suspend();						// return to last resume
 
-      this->fn = 1;
-      fn2 = fn1;
-      fn1 = this->fn;
-      suspend(); 		// return to last resume
+	this->fn = 1;					// case 1
+	fn2 = fn1;
+	fn1 = this->fn;
+	suspend();						// return to last resume
 
-      for ( ;; ) {
-            this->fn = fn1 + fn2;
-            fn2 = fn1;
-            fn1 = this->fn;
-            suspend(); 	// return to last resume
-      }
+	for ( ;; ) {					// general case
+		this->fn = fn1 + fn2;
+		fn2 = fn1;
+		fn1 = this->fn;
+		suspend();					// return to last resume
+	} // for
 }
 
-int next(Fibonacci* this) {
-      resume(this); // transfer to last suspend
-      return this->fn;
+int next( Fibonacci * this ) {
+	resume( this );					// transfer to last suspend
+	return this->fn;
 }
 
 int main() {
-      Fibonacci f1, f2;
-      for ( int i = 1; i <= 10; i += 1 ) {
-            sout | next(&f1) | ' ' | next(&f2) | endl;
-      }
+	Fibonacci f1, f2;
+	for ( int i = 1; i <= 10; i += 1 ) {
+		sout | next( &f1 ) | ' ' | next( &f2 ) | endl;
+	} // for
+}
 
-      return 0;
-}
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fibonacci.c" //
+// End: //
Index: src/tests/identity.c
===================================================================
--- src/tests/identity.c	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
+++ src/tests/identity.c	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
@@ -0,0 +1,42 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// identity.c -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jun  8 08:21:32 2017
+// Update Count     : 18
+//
+
+#include <fstream>
+
+forall( otype T )
+T identity( T t ) {
+	return t;
+}
+
+int main() {
+	sout | "char\t\t\t"					| identity( 'z' ) | endl;
+	sout | "signed int\t\t"				| identity( 4 ) | endl;
+	sout | "unsigned int\t\t"			| identity( 4u ) | endl;
+	sout | "signed long int\t\t" 		| identity( 4l ) | endl;
+	sout | "unsigned long int\t" 		| identity( 4ul ) | endl;
+	sout | "signed long long int\t"		| identity( 4ll ) | endl;
+	sout | "unsigned long long int\t"	| identity( 4ull ) | endl;
+	sout | "float\t\t\t" 				| identity( 4.1f ) | endl;
+	sout | "double\t\t\t"				| identity( 4.1 ) | endl;
+	sout | "long double\t\t"			| identity( 4.1l ) | endl;
+	sout | "float _Complex\t\t"			| identity( -4.1F-2.0iF ) | endl;
+	sout | "double _Complex\t\t"		| identity( -4.1D-2.0iD ) | endl;
+	sout | "long double _Complex\t"		| identity( -4.1L-2.0iL ) | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa identity.c" //
+// End: //
Index: src/tests/io.c
===================================================================
--- src/tests/io.c	(revision c77fd8be5ec10e874c647e1154739966d1debc6c)
+++ src/tests/io.c	(revision 28762a1f5d7761f958590a5c4aadb1a52cdb9670)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar  2 16:56:02 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar 21 22:36:06 2017
-// Update Count     : 48
+// Last Modified On : Thu Jun  8 09:52:10 2017
+// Update Count     : 51
 // 
 
@@ -17,5 +17,5 @@
 
 int main() {
-	char c;														// basic types
+	char c;												// basic types
 	short int si;
 	unsigned short int usi;
@@ -32,5 +32,6 @@
 	double _Complex dc;
 	long double _Complex ldc;
-	char s1[10], s2[10];
+	enum { size = 10 };
+	char s1[size], s2[size];
 
 	int x = 3, y = 5, z = 7;
@@ -41,79 +42,100 @@
 	sout | endl;
 
-	ifstream in;												// create / open file
+	sout
+		// opening delimiters
+		| "x (" | 1
+		| "x [" | 2
+		| "x {" | 3
+		| "x =" | 4
+		| "x $" | 5
+		| "x £" | 6
+		| "x ¥" | 7
+		| "x ¡" | 8
+		| "x ¿" | 9
+		| "x «" | 10
+		| endl;
+	sout
+		// closing delimiters
+		| 1 | ", x"
+		| 2 | ". x"
+		| 3 | "; x"
+		| 4 | "! x"
+		| 5 | "? x"
+		| 6 | "% x"
+		| 7 | "¢ x"
+		| 8 | "» x"
+		| 9 | ") x"
+		| 10 | "] x"
+		| 11 | "} x"
+		| endl;
+	sout
+		// opening-closing delimiters
+		| "x`" | 1 | "`x'" | 2
+		| "'x\"" | 3 | "\"x:" | 4
+		| ":x " | 5 | " x\t" | 6
+		| "\tx\f" | 7 | "\fx\v" | 8
+		| "\vx\n" | 9 | "\nx\r" | 10
+		| "\rx" |
+		endl;
+	sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl;
+
+	ifstream in;										// create / open file
 	open( &in, "io.data", "r" );
 
-	&in | &c													// character
-		| &si | &usi | &i | &ui | &li | &uli | &lli | &ulli		// integral
-		| &f | &d | &ld											// floating point
-		| &fc | &dc | &ldc										// floating-point complex
-		| cstr( s1 ) | cstr( s2, 10 );							// C string, length unchecked and checked
+	&in | &c											// character
+		| &si | &usi | &i | &ui | &li | &uli | &lli | &ulli	// integral
+		| &f | &d | &ld									// floating point
+		| &fc | &dc | &ldc								// floating-point complex
+		| cstr( s1 ) | cstr( s2, size );				// C string, length unchecked and checked
 
-	sout | c | ' ' | endl										// character
-		 | si | usi | i | ui | li | uli | lli | ulli | endl		// integral
-		 | f | d | ld | endl									// floating point
-		 | fc | dc | ldc | endl;								// complex
+	sout | c | ' ' | endl								// character
+		| si | usi | i | ui | li | uli | lli | ulli | endl // integral
+		| f | d | ld | endl								// floating point
+		| fc | dc | ldc | endl;							// complex
 	sout | endl;
-	sout | f | "" | d | "" | ld | endl							// floating point without separator
-		 | sepDisable | fc | dc | ldc | sepEnable | endl		// complex without separator
-		 | sepOn | s1 | sepOff | s2 | endl						// local separator removal
-		 | s1 | "" | s2 | endl;									// C string without separator
+	sout | f | "" | d | "" | ld | endl					// floating point without separator
+		| sepDisable | fc | dc | ldc | sepEnable | endl	// complex without separator
+		| sepOn | s1 | sepOff | s2 | endl				// local separator removal
+		| s1 | "" | s2 | endl;							// C string without separator
 	sout | endl;
 
-	sepSet( sout, ", $" );										// change separator, maximum of 15 characters
+	sepSet( sout, ", $" );								// change separator, maximum of 15 characters
 	sout | f | d | ld | endl
-		 | fc | dc | ldc | endl
-		 | s1 | s2 | endl;
+		| fc | dc | ldc | endl
+		| s1 | s2 | endl;
 	sout | endl;
+
+	[int, int] t1 = [1, 2], t2 = [3, 4];
+	sout | t1 | t2 | endl;								// print tuple
+
 	sepSet( sout, " " );
+	sepSet( sout, ", $" );								// set separator from " " to ", $"
+	sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"" | endl;
+	sepSet( sout, " " );								// reset separator to " "
+	sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"" | endl;
 
-	sout
-		// opening delimiters
-		| "v(" | 27
-		| "v[" | 27
-		| "v{" | 27
-		| "$" | 27
-		| "=" | 27
-		| "£" | 27
-		| "¥" | 27
-		| "¡" | 27
-		| "¿" | 27
-		| "«" | 27
-		| endl
-		// closing delimiters
-		| 25 | ","
-		| 25 | "."
-		| 25 | ":"
-		| 25 | ";"
-		| 25 | "!"
-		| 25 | "?"
-		| 25 | "%"
-		| 25 | "¢"
-		| 25 | "»"
-		| 25 | ")"
-		| 25 | "]"
-		| 25 | "}"
-		| endl
-		// opening-closing delimiters
-		| 25 | "'" | 27
-		| 25 | "`" | 27
-		| 25 | "\"" | 27
-		| 25 | " " | 27
-		| 25 | "\f" | 27
-		| 25 | "\n" | 27
-		| 25 | "\r" | 27
-		| 25 | "\t" | 27
-		| 25 | "\v" | 27
-		| endl;
+	sout | sepOn | 1 | 2 | 3 | sepOn | endl;			// separator at start of line
+	sout | 1 | sepOff | 2 | 3 | endl;					// locally turn off implicit separator
 
-	[int, int, const char *, double] t = { 3, 4, "a", 7.2 };
+	sout | sepDisable | 1 | 2 | 3 | endl;				// globally turn off implicit separation
+	sout | 1 | sepOn | 2 | 3 | endl;					// locally turn on implicit separator
+	sout | sepEnable | 1 | 2 | 3 | endl;				// globally turn on implicit separation
+
+	sepSetTuple( sout, " " );							// set tuple separator from ", " to " "
+	sout | t1 | t2 | " \"" | sepGetTuple( sout ) | "\"" | endl;
+	sepSetTuple( sout, ", " );							// reset tuple separator to ", "
+	sout | t1 | t2 | " \"" | sepGetTuple( sout ) | "\"" | endl;
+
+	sout | t1 | t2 | endl;								// print tuple
+
+	[int, int, const char *, double] t3 = { 3, 4, "a", 7.2 };
 	sout | [ 3, 4, "a", 7.2 ] | endl;
-	sout | t | endl;
+	sout | t3 | endl;
 	sepSetTuple( sout, " " );
-	sout | t | endl;
-	sout | sepOn | t | sepDisable | t | sepEnable | t | endl;
+	sout | t3 | endl;
+	sout | sepOn | t3 | sepDisable | t3 | sepEnable | t3 | endl;
 	sepSet( sout, "^" );
 	sepSetTuple( sout, "-" );
-	sout | t | 3 | 4 | t | endl;
+	sout | t3 | 3 | 4 | t3 | endl;
 }
 
