break less on recursive errors
This commit is contained in:
parent
b7f60ffb1c
commit
1072a8aa77
@ -156,7 +156,7 @@ static bool u8_get(u8** cv, u8* cE, const char* x) {
|
||||
}
|
||||
|
||||
static B variation_refs;
|
||||
static void variation_root() {
|
||||
static void variation_gcRoot() {
|
||||
mm_visit(variation_refs);
|
||||
mm_visit(listVariations_def);
|
||||
#define F(X) mm_visit(v_##X);
|
||||
@ -264,7 +264,7 @@ B getInternalNS() {
|
||||
FOR_VARIATION(F)
|
||||
#undef F
|
||||
listVariations_def = m_str8l("if");
|
||||
gc_addFn(variation_root);
|
||||
gc_addFn(variation_gcRoot);
|
||||
#define F(X) inc(bi_##X),
|
||||
B fn = bqn_exec(m_str32(U"{⟨ Type, Refc, Squeeze, IsPure, Info, ListVariations, Variation, ClearRefs, Unshare, DeepSqueeze⟩⇐𝕩}"), emptyCVec(), emptySVec());
|
||||
B arg = m_caB(10,(B[]){F(itype)F(refc)F(squeeze)F(isPure)F(info)F(listVariations)F(variation)F(clearRefs)F(unshare)F(deepSqueeze)});
|
||||
|
||||
@ -5,7 +5,14 @@
|
||||
#include "../builtins.h"
|
||||
|
||||
|
||||
bool inErr;
|
||||
NORETURN NOINLINE void err(char* s) {
|
||||
if (inErr) {
|
||||
printf("\nCBQN encountered fatal error during information printing of another fatal error. Exiting without printing more info.\n");
|
||||
exit(1);
|
||||
__builtin_abort();
|
||||
}
|
||||
inErr = true;
|
||||
puts(s); fflush(stdout);
|
||||
vm_pstLive(); fflush(stdout);
|
||||
print_vmStack(); fflush(stdout);
|
||||
|
||||
@ -42,7 +42,7 @@ DEF_FREE(nfnDesc) { err("nfnDesc shouldn't be freed!"); }
|
||||
void nfnDesc_visit(Value* x) { mm_visit(((NFnDesc*)x)->name); }
|
||||
void nfnDesc_print(B x) { printf("(native function description)"); }
|
||||
|
||||
void nfn_gcFn() {
|
||||
void nfn_gcRoot() {
|
||||
mm_visit(nfn_list);
|
||||
}
|
||||
void nfn_init() {
|
||||
@ -51,5 +51,5 @@ void nfn_init() {
|
||||
TIi(t_nfn,freeF) = nfn_freeF; TIi(t_nfnDesc,freeF) = nfnDesc_freeF;
|
||||
TIi(t_nfn,visit) = nfn_visit; TIi(t_nfnDesc,visit) = nfnDesc_visit;
|
||||
TIi(t_nfn,print) = nfn_print; TIi(t_nfnDesc,print) = nfnDesc_print;
|
||||
gc_addFn(nfn_gcFn);
|
||||
gc_addFn(nfn_gcRoot);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user