#include "tests.h" Maybe dont_throw(){ return SUCCESS(Uni(UInt64, 9/2)); } Maybe throw_error(){ safethrow("test exception"); } Maybe throw_errcode(){ safethrow(ERR_NULLPTR); } Maybe test_maybe(){ printf("\e[94mdont_throw returns \e[92m"); throwNext(dont_throw(),rez0) printMaybe(rez0); printf("\n"); throwNext(throw_error(),rez1) printMaybe(rez1); throw("test_maybe failed"); return MaybeNull; } Maybe c(){ throwNext(throw_errcode(),_) return MaybeNull; } Maybe b(){ throwNext(c(),_) return MaybeNull; } Maybe a(){ throwNext(b(),_) return MaybeNull; } void test_safethrow(){ printf("\e[96m-----------[test_safethrow]-----------\n"); optime("test_safethrow", 1, ({ Maybe e=test_maybe(); printf("\e[94mthrow_error:\n\e[92m"); printMaybe(e); Maybe_free(e); printf("\e[94mthrow_errcode:\n\e[92m"); e=a(); printMaybe(e); Maybe_free(e); })); }