Index: tests/exceptions/resume.cfa
===================================================================
--- tests/exceptions/resume.cfa	(revision 7f9968adc291989fb495461dc2b178248a560216)
+++ tests/exceptions/resume.cfa	(revision d6cd371f3cb09d2e81a0ba82aeced1d947cc8c5d)
@@ -4,17 +4,24 @@
 #include "except-io.hfa"
 
-TRIVIAL_EXCEPTION(yin);
-TRIVIAL_EXCEPTION(yang);
-TRIVIAL_EXCEPTION(zen);
-TRIVIAL_EXCEPTION(moment_of, zen);
+EHM_EXCEPTION(yin)();
+EHM_EXCEPTION(yang)();
+EHM_EXCEPTION(zen)();
+
+EHM_VIRTUAL_TABLE(yin, yin_vt);
+EHM_VIRTUAL_TABLE(yang, yang_vt);
+EHM_VIRTUAL_TABLE(zen, zen_vt);
 
 void in_void(void);
 
 int main(int argc, char * argv[]) {
+	yin a_yin = {&yin_vt};
+	yang a_yang = {&yang_vt};
+	zen a_zen = {&zen_vt};
+
 	// The simple throw catchResume test.
 	try {
 		loud_exit a = "simple try clause";
 		printf("simple throw\n");
-		throwResume (zen){};
+		throwResume a_zen;
 		printf("end of try clause\n");
 	} catchResume (zen * error) {
@@ -26,18 +33,7 @@
 	// Throw catch-all test.
 	try {
-		throwResume (zen){};
+		throwResume a_zen;
 	} catchResume (exception_t * error) {
 		printf("catch-all\n");
-	}
-	printf("\n");
-
-	// Catch a parent of the given exception.
-	try {
-		printf("throwing child exception\n");
-		throwResume (moment_of){};
-	} catchResume (zen *) {
-		printf("inner parent match\n");
-	} catchResume (moment_of *) {
-		printf("outer exact match\n");
 	}
 	printf("\n");
@@ -46,5 +42,5 @@
 	try {
 		try {
-			throwResume (yin){};
+			throwResume a_yin;
 		} catchResume (zen *) {
 			printf("caught yin as zen\n");
@@ -62,5 +58,5 @@
 			loud_exit a = "rethrow inner try";
 			printf("rethrow inner try\n");
-			throwResume (zen){};
+			throwResume a_zen;
 		} catchResume (zen *) {
 			loud_exit a = "rethrowing catch clause";
@@ -77,8 +73,8 @@
 	try {
 		try {
-			throwResume (yin){};
+			throwResume a_yin;
 		} catchResume (yin *) {
 			printf("caught yin, will throw yang\n");
-			throwResume (yang){};
+			throwResume a_yang;
 		} catchResume (yang *) {
 			printf("caught exception from same try\n");
@@ -93,10 +89,10 @@
 		try {
 			printf("throwing first exception\n");
-			throwResume (yin){};
+			throwResume a_yin;
 		} catchResume (yin *) {
 			printf("caught first exception\n");
 			try {
 				printf("throwing second exception\n");
-				throwResume (yang){};
+				throwResume a_yang;
 			} catchResume (yang *) {
 				printf("caught second exception\n");
@@ -114,10 +110,10 @@
 	try {
 		try {
-			throwResume (zen){};
-			throwResume (zen){};
+			throwResume a_zen;
+			throwResume a_zen;
 		} catchResume (zen *) {
 			printf("inner catch\n");
 		}
-		throwResume (zen){};
+		throwResume a_zen;
 	} catchResume (zen *) {
 		printf("outer catch\n");
@@ -130,8 +126,9 @@
 // Do a throw and rethrow in a void function.
 void in_void(void) {
+    zen a_zen = {&zen_vt};
 	try {
 		try {
 			printf("throw\n");
-			throwResume (zen){};
+			throwResume a_zen;
 		} catchResume (zen *) {
 			printf("rethrow\n");
