Changeset 3eb5a478 for tests/exceptions


Ignore:
Timestamp:
Apr 2, 2020, 3:00:55 PM (4 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.

Location:
tests/exceptions
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • tests/exceptions/.expect/interact.txt

    r6d43cdde r3eb5a478  
    88
    99resume catch on resume
     10
     11termination catch, will resume
     12outer resume catch
     13
     14resumption catch, will terminate
     15inner termination catch
  • tests/exceptions/.expect/resume.txt

    r6d43cdde r3eb5a478  
    1919caught yin, will throw yang
    2020caught yang
     21
     22throwing first exception
     23caught first exception
     24throwing second exception
     25caught second exception
     26recaught first exception
  • 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}
  • tests/exceptions/resume.cfa

    r6d43cdde r3eb5a478  
    7777                printf("caught yang\n");
    7878        }
    79 #ifdef FAILING
    8079        printf("\n");
    8180
     
    10099                printf("caught second exception (bad location)\n");
    101100        }
    102 #endif
    103101}
Note: See TracChangeset for help on using the changeset viewer.