Changeset 3eb5a478 for tests/exceptions/interact.cfa
- Timestamp:
- Apr 2, 2020, 3:00:55 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 0f3d844
- Parents:
- 6d43cdde
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/exceptions/interact.cfa
r6d43cdde r3eb5a478 5 5 6 6 TRIVIAL_EXCEPTION(star); 7 TRIVIAL_EXCEPTION(moon); 7 8 8 9 int main(int argc, char * argv[]) { … … 51 52 printf("resume catch on resume\n"); 52 53 } 54 printf("\n"); 55 56 // Resume a termination exception. 57 try { 58 try { 59 try { 60 THROW(&(star){}); 61 } catchResume (star *) { 62 printf("inner resume catch (error)\n"); 63 } 64 } catch (star * error) { 65 printf("termination catch, will resume\n"); 66 THROW_RESUME(error); 67 } 68 } catchResume (star *) { 69 printf("outer resume catch\n"); 70 } 71 printf("\n"); 72 73 // Terminate a resumption exception. 74 try { 75 try { 76 try { 77 THROW_RESUME(&(star){}); 78 } catch (star *) { 79 printf("inner termination catch\n"); 80 } 81 } catchResume (star * error) { 82 printf("resumption catch, will terminate\n"); 83 THROW(error); 84 } 85 } catch (star *) { 86 printf("outer terminate catch (error)\n"); 87 } 88 #if 0 89 printf("\n"); 90 91 // Unwinding a resumption catch does not break the system. 92 try { 93 try { 94 try { 95 try { 96 printf("throwing resume moon\n"); 97 THROW_RESUME(&(moon){}); 98 } catch (star *) { 99 printf("termination catch\n"); 100 } 101 printf("throwing resume star\n"); 102 THROW_RESUME(&(star){}); 103 } catchResume (star *) { 104 printf("resumption star catch\n"); 105 } 106 } catchResume (moon *) { 107 printf("resumption moon catch, will terminate\n"); 108 THROW(&(star){}); 109 } 110 } catchResume (star *) { 111 printf("outermost catch (error)\n"); 112 } 113 #endif 53 114 }
Note: See TracChangeset
for help on using the changeset viewer.