Index: tests/.expect/init1.txt
===================================================================
--- tests/.expect/init1.txt	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
+++ tests/.expect/init1.txt	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -0,0 +1,47 @@
+error: No reasonable alternatives for expression Untyped Init Expression
+  Name: rx  InitAlternative: reference to signed int
+error: No reasonable alternatives for expression Untyped Init Expression
+  Name: px  InitAlternative: pointer to signed int
+error: No reasonable alternatives for expression Untyped Init Expression
+  Name: crx  InitAlternative: reference to float
+error: No reasonable alternatives for expression Untyped Init Expression
+  Name: cpx  InitAlternative: pointer to float
+init1.cfa:94:1 error: No reasonable alternatives for expression Generated Cast of:
+  Name: rx
+... to:
+  reference to signed int
+init1.cfa:97:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: ?{}
+...to:
+  Generated Cast of:
+    Variable Expression: _retval_f_py: pointer to signed int
+  ... to:
+    reference to pointer to signed int
+  Name: px
+
+init1.cfa:104:1 error: No reasonable alternatives for expression Generated Cast of:
+  Name: crx
+... to:
+  reference to float
+init1.cfa:107:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: ?{}
+...to:
+  Generated Cast of:
+    Variable Expression: _retval_f_py2: pointer to float
+  ... to:
+    reference to pointer to float
+  Name: cpx
+
+init1.cfa:114:1 error: No reasonable alternatives for expression Generated Cast of:
+  Name: s
+... to:
+  reference to instance of type T (not function type)
+init1.cfa:118:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: ?{}
+...to:
+  Generated Cast of:
+    Variable Expression: _retval_anycvt: pointer to instance of type T (not function type)
+  ... to:
+    reference to pointer to instance of type T (not function type)
+  Name: s
+
Index: tests/avltree/avl1.cfa
===================================================================
--- tests/avltree/avl1.cfa	(revision 1d179399a54c3ddcecf129adeec6303b1492ddac)
+++ tests/avltree/avl1.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -24,5 +24,5 @@
 tree(K, V) * create(K key, V value) {
   // infinite loop trying to resolve ... t = malloc();
-  tree(K, V) * t = malloc(sizeof(tree(K,V)));
+  tree(K, V) * t = ( tree(K, V) * ) malloc(sizeof(tree(K,V)));
   (*t){ key, value };
   return t;
Index: tests/bugs/66.cfa
===================================================================
--- tests/bugs/66.cfa	(revision 1d179399a54c3ddcecf129adeec6303b1492ddac)
+++ tests/bugs/66.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -5,5 +5,5 @@
 
 int main() {
-	int * next = (void*)0;
+	int * next = 0p;
 	if( next ) {
 		return 1;
Index: tests/concurrent/signal/block.cfa
===================================================================
--- tests/concurrent/signal/block.cfa	(revision 1d179399a54c3ddcecf129adeec6303b1492ddac)
+++ tests/concurrent/signal/block.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -82,5 +82,5 @@
 	if( !is_empty( cond ) ) {
 
-		$thread * next = front( cond );
+		$thread * next = ( $thread * ) front( cond );
 
 		if( ! signal_block( cond ) ) {
Index: tests/exceptions/conditional.cfa
===================================================================
--- tests/exceptions/conditional.cfa	(revision 1d179399a54c3ddcecf129adeec6303b1492ddac)
+++ tests/exceptions/conditional.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -17,5 +17,5 @@
 };
 
-void num_error_msg(num_error * this) {
+const char * num_error_msg(num_error * this) {
     if ( ! this->msg ) {
         static const char * base = "Num Error with code: X";
Index: tests/exceptions/defaults.cfa
===================================================================
--- tests/exceptions/defaults.cfa	(revision 1d179399a54c3ddcecf129adeec6303b1492ddac)
+++ tests/exceptions/defaults.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -13,5 +13,5 @@
 }
 
-char * get_log_message(log_message * this) {
+const char * get_log_message(log_message * this) {
 	return this->msg;
 }
@@ -28,10 +28,10 @@
 	// We can catch log:
 	try {
-		throwResume (log_message){(char *)"Should be printed.\n"};
+		throwResume (log_message){"Should be printed.\n"};
 	} catchResume (log_message * this) {
 		printf("%s", this->virtual_table->msg(this));
 	}
 	// But we don't have to:
-	throwResume (log_message){(char *)"Should not be printed.\n"};
+	throwResume (log_message){"Should not be printed.\n"};
 }
 
Index: tests/init1.cfa
===================================================================
--- tests/init1.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
+++ tests/init1.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -0,0 +1,120 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2020 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// init1.cfa -- tests of initializing pointer- and reference-typed variables and returns
+//
+// Author           : Michael Brooks
+// Created On       : Thu Jul 16 22:00:00 2020
+// Last Modified By : Michael Brooks
+// Last Modified On : Thu Jul 16 22:00:00 2020
+// Update Count     : 1
+//
+
+void f() {
+
+    //
+    // setup
+    //
+
+    float x = 3.14;
+
+    float & rx = x;
+    float * px = &x;
+
+    const float & crx = x;
+    const float * cpx = &x;
+
+    //
+    // sound initializations
+    //
+
+    char * str1 = "hi";
+    const char * str2 = "hi";
+
+    float & rx2 = rx;
+    float * px2 = px;
+
+    const float & crx2 = crx;
+    const float * cpx2 = cpx;
+
+    //
+    // unsound initializations
+    //
+
+    // mismatched referenced type
+    int & ry = rx;
+    int * py = px;
+
+    // would discard refered constness (same float is referenced)
+    float & ry2 = crx;
+    float * py2 = cpx;
+}
+
+//
+// sound returns
+//
+
+char * f_str1() {
+    return "hi";
+}
+
+const char * f_str2() {
+    return "hi";
+}
+
+float & f_rx2 () {
+    float & rx = *0p;
+    return rx;
+}
+
+float * f_px2 () {
+    float * px = 0p;
+    return px;
+}
+
+const float & f_crx2 () {
+    float & rx = *0p;
+    return rx;
+}
+
+const float * f_cpx2 () {
+    float * px = 0p;
+    return px;
+}
+
+//
+// unsound returns
+//
+
+int & f_ry() { 
+    float & rx = *0p;
+    return rx;               // mismatched referenced type
+}
+
+int * f_py() {
+    float * px = 0p;
+    return px;               // mismatched referenced type
+}
+
+float & f_ry2() {
+    const float & crx = *0p;
+    return crx;              // would discard refered constness (same float is referenced)
+}
+
+float * f_py2() {
+    const float * cpx = 0p;
+    return cpx;              // would discard refered constness (same float is referenced)
+}
+
+forall (dtype T, dtype S)
+T & anycvt( S & s ) {
+    return s;               // mismatched referenced type
+}
+
+forall (dtype T, dtype S)
+T * anycvt( S * s ) {
+    return s;               // mismatched referenced type
+}
Index: tests/io2.cfa
===================================================================
--- tests/io2.cfa	(revision 1d179399a54c3ddcecf129adeec6303b1492ddac)
+++ tests/io2.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -121,5 +121,5 @@
 
 	[int, int, const char *, double] t3 = { 3, 4, "a", 7.2 };
-	sout | [ 3, 4, "a", 7.2 ];
+	sout | [ 3, 4, (const char*)"a", 7.2 ];             // workaround trac#207: the const cast should not be needed
 	sout | t3;
 	sepSetTuple( sout, " " );
Index: tests/searchsort.cfa
===================================================================
--- tests/searchsort.cfa	(revision 1d179399a54c3ddcecf129adeec6303b1492ddac)
+++ tests/searchsort.cfa	(revision b81fd952a5ac1533e8228e162fec0eac081416cf)
@@ -38,7 +38,7 @@
 	} // for
 	sout | nl;
-	for ( i; 0 ~ size ) {		// C version
+	for ( i; 0 ~ size ) {		// C version, returns void*
 		int key = size - i;
-		int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
+		int * v = ( int * ) bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
 		sout | key | ':' | *v | ", ";
 	} // for
