source: tests/except-1.cfa@ 02af79b0

ADT arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 02af79b0 was dc8511c, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

first attempt at updating suffixes for test programs

  • Property mode set to 100644
File size: 1.2 KB
RevLine 
[86d5ba7c]1// Draft memory management test. (remember -fexceptions)
[fcc88a4]2// Outdated: The integer constant exceptions need to be replaced with virtual
3// exceptions for the new system.
[86d5ba7c]4
5#include <stdio.h>
6
[dc8511c]7#include "except-mac.hfa"
[e9145a3]8TRIVIAL_EXCEPTION(yin)
9TRIVIAL_EXCEPTION(yang)
10
[86d5ba7c]11int main()
12{
13 try {
[e9145a3]14 yin a;
15 THROW(&a);
[86d5ba7c]16 }
[e9145a3]17 catch( yin * err ) {
[86d5ba7c]18 printf("First Caught\n");
19 try {
[e9145a3]20 yang b;
21 THROW(&b);
[86d5ba7c]22 }
[e9145a3]23 catch( yang * err ) {
[86d5ba7c]24 printf("Both Caught\n");
25 }
26 }
27 printf("Part A Complete\n");
28
29 try {
30 try {
[e9145a3]31 yang c;
32 THROW(&c);
[86d5ba7c]33 }
[e9145a3]34 catch( yang * err ) {
[86d5ba7c]35 printf("First Catch and rethrow\n");
36 throw;
37 }
38 }
[e9145a3]39 catch( yang * err ) {
[86d5ba7c]40 printf("Second Catch\n");
41 }
42 printf("Part B Complete\n");
43
44 try {
45 try {
[e9145a3]46 yin d;
47 THROW(&d);
[86d5ba7c]48 }
[e9145a3]49 catch( yin * err ) {
[86d5ba7c]50 printf("Throw before cleanup\n");
[e9145a3]51 yang e;
52 THROW(&e);
[86d5ba7c]53 }
54 }
[e9145a3]55 catch( yang * err ) {
[86d5ba7c]56 printf("Catch after cleanup\n");
57 }
58 printf("Part C Complete\n");
[ff7ff14a]59
60 try {
61 try {
[e9145a3]62 yin f;
63 THROW(&f);
[ff7ff14a]64 }
[e9145a3]65 catch( yin * err ) {
[ff7ff14a]66 printf("Caught initial throw.\n");
67 try {
[e9145a3]68 yang g;
69 THROW(&g);
[ff7ff14a]70 }
[e9145a3]71 catch( yang * err ) {
[ff7ff14a]72 printf("Caught intermediate throw.\n");
73 }
74 throw;
75 }
76 }
[e9145a3]77 catch( yin * err ) {
[ff7ff14a]78 printf("Caught final throw.\n");
79 }
80 printf("Part D Complete\n");
[86d5ba7c]81}
Note: See TracBrowser for help on using the repository browser.