Changes in / [6065281f:f02f546]
- Location:
- tests/exceptions
- Files:
-
- 15 edited
-
.expect/polymorphic.txt (modified) (1 diff)
-
cancel/coroutine.cfa (modified) (2 diffs)
-
cancel/thread.cfa (modified) (3 diffs)
-
conditional.cfa (modified) (2 diffs)
-
data-except.cfa (modified) (2 diffs)
-
defaults.cfa (modified) (6 diffs)
-
except-io.hfa (modified) (3 diffs)
-
finally.cfa (modified) (2 diffs)
-
interact.cfa (modified) (8 diffs)
-
polymorphic.cfa (modified) (7 diffs)
-
resume.cfa (modified) (8 diffs)
-
terminate.cfa (modified) (8 diffs)
-
trash.cfa (modified) (2 diffs)
-
virtual-cast.cfa (modified) (2 diffs)
-
virtual-poly.cfa (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/exceptions/.expect/polymorphic.txt
r6065281f rf02f546 4 4 5 5 -7 6 false 7 true 6 0 7 1 -
tests/exceptions/cancel/coroutine.cfa
r6065281f rf02f546 1 1 // Try cancelling a coroutine. 2 2 3 #include <fstream.hfa>4 3 #include <coroutine.hfa> 5 4 … … 14 13 15 14 void main(WillCancel & wc) { 16 sout | '1';15 printf("1"); 17 16 cancel_stack((internal_error){&internal_vt}); 18 sout | '!';17 printf("!"); 19 18 } 20 19 21 20 int main(int argc, char * argv[]) { 22 sout | nlOff;23 21 WillCancel cancel; 24 22 try { 25 sout | '0';23 printf("0"); 26 24 resume(cancel); 27 sout | '4';25 printf("4"); 28 26 } catchResume (CoroutineCancelled(WillCancel) * error) { 29 sout | '2';27 printf("2"); 30 28 if ((virtual internal_error *)error->the_exception) { 31 sout | '3';29 printf("3"); 32 30 } 33 31 } 34 sout | '5' | nl;32 printf("5\n"); 35 33 } -
tests/exceptions/cancel/thread.cfa
r6065281f rf02f546 1 1 // Try cancelling a thread. 2 2 3 #include <fstream.hfa>4 3 #include <thread.hfa> 5 4 … … 14 13 15 14 void main(WillCancel &) { 16 sout | '1';15 printf("1"); 17 16 cancel_stack((internal_error){&internal_vt}); 18 sout | '!';17 printf("!"); 19 18 } 20 19 21 20 void explicit() { 22 21 try { 23 sout | '0';22 printf("0"); 24 23 WillCancel cancel; 25 sout | '1';24 printf("1"); 26 25 join(cancel); 27 sout | '4';26 printf("4"); 28 27 } catchResume (ThreadCancelled(WillCancel) * error) { 29 sout | '2';28 printf("2"); 30 29 if ((virtual internal_error *)error->the_exception) { 31 sout | '3';30 printf("3"); 32 31 } 33 32 } 34 sout | '5' | nl;33 printf("5\n"); 35 34 } 36 35 … … 38 37 try { 39 38 { 40 sout | '0';39 printf("0"); 41 40 WillCancel cancel; 42 sout | '1';41 printf("1"); 43 42 } 44 sout | '4';43 printf("4"); 45 44 } catchResume (ThreadCancelled(WillCancel) * error) { 46 sout | '2';45 printf("2"); 47 46 if ((virtual internal_error *)error->the_exception) { 48 sout | '3';47 printf("3"); 49 48 } 50 49 } 51 sout | '5' | nl;50 printf("5\n"); 52 51 } 53 52 54 53 int main(int argc, char * argv[]) { 55 sout | nlOff;56 54 explicit(); 57 55 implicit(); -
tests/exceptions/conditional.cfa
r6065281f rf02f546 3 3 // I may fold this back into terminate.cfa and resume.cfa once setting 4 4 // up the non-trivial exception is reasonable to do. 5 6 #include <fstream.cfa>7 5 8 6 exception num_error { … … 13 11 14 12 void caught_num_error(int expect, num_error * actual) { 15 sout | "Caught num_error: expected=" | expect | "actual=" | actual->num | '.';13 printf("Caught num_error: expected=%d actual=%d.\n", expect, actual->num); 16 14 } 17 15 -
tests/exceptions/data-except.cfa
r6065281f rf02f546 1 1 // Test exceptions that add data but no functionality. 2 3 #include <fstream.cfa>4 2 5 3 exception paired { … … 20 18 throw except; 21 19 } catch (paired * exc) { 22 sout | virtual_msg(exc) | '(' | exc->first | ", " | exc->second | ')';20 printf("%s(%d, %d)\n", virtual_msg(exc), exc->first, exc->second); 23 21 ++exc->first; 24 22 } 25 23 26 sout | virtual_msg(&except) | '(' | except.first | ", " | except.second | ')';24 printf("%s(%d, %d)\n", virtual_msg(&except), except.first, except.second); 27 25 28 26 try { 29 27 throwResume except; 30 28 } catchResume (paired * exc) { 31 sout | virtual_msg(exc) | '(' | exc->first | ", " | exc->second | ')';29 printf("%s(%d, %d)\n", virtual_msg(exc), exc->first, exc->second); 32 30 ++exc->first; 33 31 } 34 32 35 sout | virtual_msg(&except) | '(' | except.first | ", " | except.second | ')';33 printf("%s(%d, %d)\n", virtual_msg(&except), except.first, except.second); 36 34 } -
tests/exceptions/defaults.cfa
r6065281f rf02f546 1 1 // Tests for providing new default operations. 2 2 3 #include <fstream.hfa>4 3 #include <string.h> 5 4 … … 36 35 throwResume (log_message){&log_vt, "Should be printed.\n"}; 37 36 } catchResume (log_message * this) { 38 sout | this->virtual_table->msg(this) | nonl;37 printf("%s", this->virtual_table->msg(this)); 39 38 } 40 39 // But we don't have to: … … 45 44 exception jump {}; 46 45 void defaultTerminationHandler(jump &) { 47 sout | "jump default handler.";46 printf("jump default handler.\n"); 48 47 } 49 48 … … 54 53 throw (jump){&jump_vt}; 55 54 } catch (jump * this) { 56 sout | "jump catch handler.";55 printf("jump catch handler.\n"); 57 56 } 58 57 throw (jump){&jump_vt}; … … 76 75 throw (first){&first_vt}; 77 76 } catch (unhandled_exception * t) { 78 sout | "Catch unhandled_exception.";77 printf("Catch unhandled_exception.\n"); 79 78 } 80 79 } … … 85 84 void cross_test(void) { 86 85 void defaultTerminationHandler(first &) { 87 sout | "cross terminate default";86 printf("cross terminate default\n"); 88 87 throw (second){&second_vt}; 89 88 } 90 89 void defaultResumptionHandler(first &) { 91 sout | "cross resume default";90 printf("cross resume default\n"); 92 91 throwResume (second){&second_vt}; 93 92 } 94 93 try { 95 sout | "cross terminate throw";94 printf("cross terminate throw\n"); 96 95 throw (first){&first_vt}; 97 96 } catch (second *) { 98 sout | "cross terminate catch";97 printf("cross terminate catch\n"); 99 98 } 100 99 try { 101 sout | "cross resume throw";100 printf("cross resume throw\n"); 102 101 throwResume (first){&first_vt}; 103 102 } catchResume (second *) { 104 sout | "cross resume catch";103 printf("cross resume catch\n"); 105 104 } 106 105 } -
tests/exceptions/except-io.hfa
r6065281f rf02f546 2 2 3 3 // Echo when a destructor is run and an area/block is left. 4 5 #include <fstream.hfa>6 7 4 struct loud_exit { 8 5 const char * area; … … 14 11 15 12 inline void ^?{}(loud_exit & this) { 16 sout | "Exiting: " | this.area;13 printf("Exiting: %s\n", this.area); 17 14 } 18 15 … … 23 20 inline void ?{}(loud_region & this, const char * region) { 24 21 this.region = region; 25 sout | "Entering: " | region;22 printf("Entering: %s\n", region); 26 23 } 27 24 28 25 inline void ^?{}(loud_region & this) { 29 sout | "Exiting: " | this.region;26 printf("Exiting: %s\n", this.region); 30 27 } -
tests/exceptions/finally.cfa
r6065281f rf02f546 1 1 // Finally Clause Tests 2 2 3 #include <fstream.hfa>4 3 #include "except-io.hfa" 5 4 … … 13 12 try { 14 13 try { 15 sout | "termination throw";14 printf("termination throw\n"); 16 15 throw exc; 17 16 } finally { 18 17 loud_exit a = "termination inner finally"; 19 sout | "finally during unwind";18 printf("finally during unwind\n"); 20 19 } 21 20 } catch (myth * error) { 22 sout | "termination catch";21 printf("termination catch\n"); 23 22 } finally { 24 23 loud_exit a = "termination outer finally"; 25 sout | "finally after catch";24 printf("finally after catch\n"); 26 25 } 27 sout | nl;26 printf("\n"); 28 27 29 28 try { 30 29 try { 31 sout | "resumption throw";30 printf("resumption throw\n"); 32 31 throwResume exc; 33 32 } finally { 34 33 loud_exit a = "resumption inner finally"; 35 sout | "finally after resume";34 printf("finally after resume\n"); 36 35 } 37 36 } catchResume (myth * error) { 38 sout | "resumption catch";37 printf("resumption catch\n"); 39 38 } finally { 40 39 loud_exit a = "resumption outer finally"; 41 sout | "finally after catch";40 printf("finally after catch\n"); 42 41 } 43 sout | "";42 printf("\n"); 44 43 45 44 try { 46 sout | "walking out of try";45 printf("walking out of try\n"); 47 46 } finally { 48 47 loud_exit a = "walking finally"; 49 sout | "walking through finally";48 printf("walking through finally\n"); 50 49 } 51 sout | "";50 printf("\n"); 52 51 53 52 try { 54 sout | "jumping out of try";53 printf("jumping out of try\n"); 55 54 goto endoffunction; 56 55 } finally { 57 56 loud_exit a = "jumping finally"; 58 sout | "jumping through finally";57 printf("jumping through finally\n"); 59 58 } 60 59 endoffunction: -
tests/exceptions/interact.cfa
r6065281f rf02f546 1 1 // Testing Interactions Between Termination and Resumption 2 2 3 #include <fstream.hfa>4 3 #include "except-io.hfa" 5 4 … … 15 14 throwResume (star){&star_vt}; 16 15 } catch (star *) { 17 sout | "caught as termination";16 printf("caught as termination\n"); 18 17 } 19 18 // Variant of the above to check timing. … … 22 21 throwResume (star){&star_vt}; 23 22 } catch (star *) { 24 sout | "caught as termination";23 printf("caught as termination\n"); 25 24 } catchResume (star *) { 26 sout | "intermediate rethrow";25 printf("intermediate rethrow\n"); 27 26 throwResume; 28 27 } 29 sout | nl;28 printf("\n"); 30 29 31 30 // Resume does not catch terminate. … … 34 33 throw (star){&star_vt}; 35 34 } catchResume (star *) { 36 sout | "resume catch on terminate";35 printf("resume catch on terminate\n"); 37 36 } 38 37 } catchResume (star *) { 39 sout | "resume catch on terminate";38 printf("resume catch on terminate\n"); 40 39 } catch (star *) { 41 sout | "terminate catch on terminate";40 printf("terminate catch on terminate\n"); 42 41 } 43 sout | nl;42 printf("\n"); 44 43 45 44 // Terminate does not catch resume. … … 48 47 throwResume (star){&star_vt}; 49 48 } catch (star *) { 50 sout | "terminate catch on resume";49 printf("terminate catch on resume\n"); 51 50 } 52 51 } catch (star *) { 53 sout | "terminate catch on resume";52 printf("terminate catch on resume\n"); 54 53 } catchResume (star *) { 55 sout | "resume catch on resume";54 printf("resume catch on resume\n"); 56 55 } 57 sout | nl;56 printf("\n"); 58 57 59 58 // Resume a termination exception. … … 63 62 throw (star){&star_vt}; 64 63 } catchResume (star *) { 65 sout | "inner resume catch (error)";64 printf("inner resume catch (error)\n"); 66 65 } 67 66 } catch (star * error) { 68 sout | "termination catch, will resume";67 printf("termination catch, will resume\n"); 69 68 throwResume *error; 70 69 } 71 70 } catchResume (star *) { 72 sout | "outer resume catch";71 printf("outer resume catch\n"); 73 72 } 74 sout | nl;73 printf("\n"); 75 74 76 75 // Terminate a resumption exception. … … 80 79 throwResume (star){&star_vt}; 81 80 } catch (star *) { 82 sout | "inner termination catch";81 printf("inner termination catch\n"); 83 82 } 84 83 } catchResume (star * error) { 85 sout | "resumption catch, will terminate";84 printf("resumption catch, will terminate\n"); 86 85 throw *error; 87 86 } 88 87 } catch (star *) { 89 sout | "outer terminate catch (error)";88 printf("outer terminate catch (error)\n"); 90 89 } 91 sout | nl;90 printf("\n"); 92 91 93 92 // Unwinding a resumption catch does not break the system. … … 96 95 try { 97 96 try { 98 sout | "throwing resume moon";97 printf("throwing resume moon\n"); 99 98 throwResume (moon){&moon_vt}; 100 99 } catch (star *) { 101 sout | "termination catch";100 printf("termination catch\n"); 102 101 } 103 sout | "throwing resume star";102 printf("throwing resume star\n"); 104 103 throwResume (star){&star_vt}; 105 104 } catchResume (star *) { 106 sout | "resumption star catch";105 printf("resumption star catch\n"); 107 106 } 108 107 } catchResume (moon *) { 109 sout | "resumption moon catch, will terminate";108 printf("resumption moon catch, will terminate\n"); 110 109 throw (star){&star_vt}; 111 110 } 112 111 } catchResume (star *) { 113 sout | "outermost catch (error)";112 printf("outermost catch (error)\n"); 114 113 } 115 114 } -
tests/exceptions/polymorphic.cfa
r6065281f rf02f546 1 1 // Testing polymophic exception types. 2 3 #include <fstream.hfa>4 2 5 3 forall(T &) exception proxy {}; … … 15 13 throw an_int; 16 14 } catch (proxy(int) *) { 17 sout | "terminate catch";15 printf("terminate catch\n"); 18 16 } 19 17 … … 21 19 throwResume a_char; 22 20 } catchResume (proxy(char) *) { 23 sout | "resume catch";21 printf("resume catch\n"); 24 22 } 25 23 … … 27 25 throw a_char; 28 26 } catch (proxy(int) *) { 29 sout | "caught proxy(int)";27 printf("caught proxy(int)\n"); 30 28 } catch (proxy(char) *) { 31 sout | "caught proxy(char)";29 printf("caught proxy(char)\n"); 32 30 } 33 31 } … … 46 44 throw except; 47 45 } catch (cell(int) * error) { 48 sout | error->data;46 printf("%d\n", error->data); 49 47 } 50 48 … … 52 50 cell(bool) ball = {&bool_cell, false}; 53 51 throwResume ball; 54 sout | ball.data;52 printf("%i\n", ball.data); 55 53 } catchResume (cell(bool) * error) { 56 sout | error->data;54 printf("%i\n", error->data); 57 55 error->data = true; 58 56 } … … 61 59 int main(int argc, char * argv[]) { 62 60 proxy_test(); 63 sout | nl;61 printf("\n"); 64 62 cell_test(); 65 63 } -
tests/exceptions/resume.cfa
r6065281f rf02f546 1 1 // Resumption Exception Tests 2 2 3 #include <fstream.hfa>4 3 #include "except-io.hfa" 5 4 … … 22 21 try { 23 22 loud_exit a = "simple try clause"; 24 sout | "simple throw";23 printf("simple throw\n"); 25 24 throwResume a_zen; 26 sout | "end of try clause";25 printf("end of try clause\n"); 27 26 } catchResume (zen * error) { 28 27 loud_exit a = "simple catch clause"; 29 sout | "simple catch";28 printf("simple catch\n"); 30 29 } 31 sout | nl;30 printf("\n"); 32 31 33 32 // Throw catch-all test. … … 35 34 throwResume a_zen; 36 35 } catchResume (exception_t * error) { 37 sout | "catch-all";36 printf("catch-all\n"); 38 37 } 39 sout | nl;38 printf("\n"); 40 39 41 40 // Don't catch if handler does not match exception. … … 44 43 throwResume a_yin; 45 44 } catchResume (zen *) { 46 sout | "caught yin as zen";45 printf("caught yin as zen\n"); 47 46 } 48 47 } catchResume (yang *) { 49 sout | "caught yin as yang";48 printf("caught yin as yang\n"); 50 49 } catchResume (yin *) { 51 sout | "caught yin as yin";50 printf("caught yin as yin\n"); 52 51 } 53 sout | nl;52 printf("\n"); 54 53 55 54 // Test rethrowing an exception. … … 57 56 try { 58 57 loud_exit a = "rethrow inner try"; 59 sout | "rethrow inner try";58 printf("rethrow inner try\n"); 60 59 throwResume a_zen; 61 60 } catchResume (zen *) { 62 61 loud_exit a = "rethrowing catch clause"; 63 sout | "caught throw, will rethrow";62 printf("caught throw, will rethrow\n"); 64 63 throwResume; 65 64 } 66 65 } catchResume (zen *) { 67 66 loud_exit a = "rethrow catch clause"; 68 sout | "caught rethrow";67 printf("caught rethrow\n"); 69 68 } 70 sout | nl;69 printf("\n"); 71 70 72 71 // Throw a different exception in a catch. … … 75 74 throwResume a_yin; 76 75 } catchResume (yin *) { 77 sout | "caught yin, will throw yang";76 printf("caught yin, will throw yang\n"); 78 77 throwResume a_yang; 79 78 } catchResume (yang *) { 80 sout | "caught exception from same try";79 printf("caught exception from same try\n"); 81 80 } 82 81 } catchResume (yang *) { 83 sout | "caught yang";82 printf("caught yang\n"); 84 83 } 85 sout | nl;84 printf("\n"); 86 85 87 86 // Another throw in the catch does not interfere. 88 87 try { 89 88 try { 90 sout | "throwing first exception";89 printf("throwing first exception\n"); 91 90 throwResume a_yin; 92 91 } catchResume (yin *) { 93 sout | "caught first exception";92 printf("caught first exception\n"); 94 93 try { 95 sout | "throwing second exception";94 printf("throwing second exception\n"); 96 95 throwResume a_yang; 97 96 } catchResume (yang *) { 98 sout | "caught second exception";97 printf("caught second exception\n"); 99 98 } 100 99 throwResume; 101 100 } 102 101 } catchResume (yin *) { 103 sout | "recaught first exception";102 printf("recaught first exception\n"); 104 103 } catchResume (yang *) { 105 sout | "caught second exception (bad location)";104 printf("caught second exception (bad location)\n"); 106 105 } 107 sout | nl;106 printf("\n"); 108 107 109 108 // Check successive operations. … … 113 112 throwResume a_zen; 114 113 } catchResume (zen *) { 115 sout | "inner catch";114 printf("inner catch\n"); 116 115 } 117 116 throwResume a_zen; 118 117 } catchResume (zen *) { 119 sout | "outer catch";118 printf("outer catch\n"); 120 119 } 121 sout | nl;120 printf("\n"); 122 121 123 122 in_void(); … … 129 128 try { 130 129 try { 131 sout | "throw";130 printf("throw\n"); 132 131 throwResume a_zen; 133 132 } catchResume (zen *) { 134 sout | "rethrow";133 printf("rethrow\n"); 135 134 throwResume; 136 135 } 137 136 } catchResume (zen *) { 138 sout | "handle";137 printf("handle\n"); 139 138 } 140 139 } -
tests/exceptions/terminate.cfa
r6065281f rf02f546 1 1 // Termination Exception Tests 2 2 3 #include <fstream.hfa>4 3 #include "except-io.hfa" 5 4 … … 22 21 try { 23 22 loud_exit a = "simple try clause"; 24 sout | "simple throw";23 printf("simple throw\n"); 25 24 throw a_zen; 26 sout | "end of try clause";25 printf("end of try clause\n"); 27 26 } catch (zen * error) { 28 27 loud_exit a = "simple catch clause"; 29 sout | "simple catch";28 printf("simple catch\n"); 30 29 } 31 sout | nl;30 printf("\n"); 32 31 33 32 // Throw catch-all test. … … 35 34 throw a_zen; 36 35 } catch (exception_t * error) { 37 sout | "catch-all";36 printf("catch-all\n"); 38 37 } 39 sout | nl;38 printf("\n"); 40 39 41 40 // Don't catch if handler does not match exception. … … 44 43 throw a_yin; 45 44 } catch (zen *) { 46 sout | "caught yin as zen";45 printf("caught yin as zen\n"); 47 46 } 48 47 } catch (yang *) { 49 sout | "caught yin as yang";48 printf("caught yin as yang\n"); 50 49 } catch (yin *) { 51 sout | "caught yin as yin";50 printf("caught yin as yin\n"); 52 51 } 53 sout | nl;52 printf("\n"); 54 53 55 54 // Test rethrowing an exception. … … 57 56 try { 58 57 loud_exit a = "rethrow inner try"; 59 sout | "rethrow inner try";58 printf("rethrow inner try\n"); 60 59 throw a_zen; 61 60 } catch (zen *) { 62 61 loud_exit a = "rethrowing catch clause"; 63 sout | "caught throw, will rethrow";62 printf("caught throw, will rethrow\n"); 64 63 throw; 65 64 } 66 65 } catch (zen *) { 67 66 loud_exit a = "rethrow catch clause"; 68 sout | "caught rethrow";67 printf("caught rethrow\n"); 69 68 } 70 sout | nl;69 printf("\n"); 71 70 72 71 // Throw a different exception in a catch. … … 75 74 throw a_yin; 76 75 } catch (yin *) { 77 sout | "caught yin, will throw yang";76 printf("caught yin, will throw yang\n"); 78 77 throw a_yang; 79 78 } catch (yang *) { 80 sout | "caught exception from same try";79 printf("caught exception from same try\n"); 81 80 } 82 81 } catch (yang *) { 83 sout | "caught yang";82 printf("caught yang\n"); 84 83 } 85 sout | nl;84 printf("\n"); 86 85 87 86 // Another throw in the catch does not interfere. 88 87 try { 89 88 try { 90 sout | "throwing first exception";89 printf("throwing first exception\n"); 91 90 throw a_yin; 92 91 } catch (yin *) { 93 sout | "caught first exception";92 printf("caught first exception\n"); 94 93 try { 95 sout | "throwing second exception";94 printf("throwing second exception\n"); 96 95 throw a_yang; 97 96 } catch (yang *) { 98 sout | "caught second exception";97 printf("caught second exception\n"); 99 98 } 100 99 throw; 101 100 } 102 101 } catch (yin *) { 103 sout | "recaught first exception";102 printf("recaught first exception\n"); 104 103 } catch (yang *) { 105 sout | "caught second exception (bad location)";104 printf("caught second exception (bad location)\n"); 106 105 } 107 sout | nl;106 printf("\n"); 108 107 109 108 // Check successive operations. … … 113 112 throw a_zen; 114 113 } catch (zen *) { 115 sout | "inner catch";114 printf("inner catch\n"); 116 115 } 117 116 throw a_zen; 118 117 } catch (zen *) { 119 sout | "outer catch";118 printf("outer catch\n"); 120 119 } 121 sout | nl;120 printf("\n"); 122 121 123 122 in_void(); … … 129 128 try { 130 129 try { 131 sout | "throw";130 printf("throw\n"); 132 131 throw a_zen; 133 132 } catch (zen *) { 134 sout | "rethrow";133 printf("rethrow\n"); 135 134 throw; 136 135 } 137 136 } catch (zen *) { 138 sout | "handle";137 printf("handle\n"); 139 138 } 140 139 } -
tests/exceptions/trash.cfa
r6065281f rf02f546 1 1 // Make sure throw-catch during unwind does not trash internal data. 2 3 #include <fstream.hfa>4 2 5 3 exception yin {}; … … 17 15 throw (yang){&yang_vt}; 18 16 } catch (yin *) { 19 sout | "inner yin";17 printf("inner yin\n"); 20 18 } catch (yang *) { 21 sout | "inner yang";19 printf("inner yang\n"); 22 20 } 23 21 } 24 22 } catch (yin *) { 25 sout | "outer yin";23 printf("outer yin\n"); 26 24 } catch (yang *) { 27 sout | "outer yang";25 printf("outer yang\n"); 28 26 } 29 27 } -
tests/exceptions/virtual-cast.cfa
r6065281f rf02f546 9 9 */ 10 10 11 #include <fstream.hfa>12 11 #include <stdlib.hfa> 13 12 #include <assert.h> 13 14 14 15 15 16 // Hand defined alpha virtual type: … … 105 106 free(tri); 106 107 free(top); 107 sout | "done";// non-empty .expect file108 printf( "done\n" ); // non-empty .expect file 108 109 } -
tests/exceptions/virtual-poly.cfa
r6065281f rf02f546 6 6 */ 7 7 8 #include <fstream.hfa>9 8 #include <assert.h> 10 9 … … 106 105 mono_poly_test(); 107 106 poly_poly_test(); 108 sout | "done";107 printf( "done\n" ); 109 108 }
Note:
See TracChangeset
for help on using the changeset viewer.