Ignore:
Timestamp:
Apr 2, 2020, 3:00:55 PM (5 years ago)
Author:
Andrew Beach <ajbeach@…>
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
Message:

Fixed the disabled exceptions/resume test. Added more tests in exceptions/interact, one of which is disabled.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/exceptions/interact.cfa

    r6d43cdde r3eb5a478  
    55
    66TRIVIAL_EXCEPTION(star);
     7TRIVIAL_EXCEPTION(moon);
    78
    89int main(int argc, char * argv[]) {
     
    5152                printf("resume catch on resume\n");
    5253        }
     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
    53114}
Note: See TracChangeset for help on using the changeset viewer.