Index: src/tests/dtor-early-exit.c
===================================================================
--- src/tests/dtor-early-exit.c	(revision 142cf5d5bc4083f9bfbdb71d2ae41cf1ec930d79)
+++ src/tests/dtor-early-exit.c	(revision ad28abbd348715918516b42e54c76a59c0ee63d2)
@@ -27,11 +27,11 @@
 
 // don't want these called
-void ?{}(A * a) { assert( false ); }
-void ?{}(A * a, const char * name) { a->name = name; sout | "construct " | name | endl; a->x = (int*)malloc(); }
-void ?{}(A * a, const char * name, int * ptr) { assert( false ); }
-
-A ?=?(A * a, A a) {  sout | "assign " | a->name | " " | a.name; return a; }
-void ?{}(A * a, A a) { sout | "copy construct " | a.name | endl; a->x = (int*)malloc(); }
-void ^?{}(A * a) { sout | "destruct " | a->name | endl; free(a->x); }
+void ?{}(A & a) { assert( false ); }
+void ?{}(A & a, const char * name) { a.name = name; sout | "construct " | name | endl; a.x = (int*)malloc(); }
+void ?{}(A & a, const char * name, int * ptr) { assert( false ); }
+
+A ?=?(A & a, A b) {  sout | "assign " | a.name | " " | b.name; return a; }
+void ?{}(A & a, A b) { sout | "copy construct " | b.name | endl; a.x = (int*)malloc(); }
+void ^?{}(A & a) { sout | "destruct " | a.name | endl; free(a.x); }
 
 // test returns
