don't rely on bqn_fmt when !FORMATTER or CBQN isn't yet initialized

This commit is contained in:
dzaima 2023-01-09 02:24:18 +02:00
parent 86ae984af0
commit 46f657713c
3 changed files with 9 additions and 5 deletions

View File

@ -100,7 +100,7 @@ B repr_c1(B t, B x) {
#if FORMATTER #if FORMATTER
return bqn_repr(x); return bqn_repr(x);
#else #else
thrM("•Repr: Cannot represent non-numbers without FORMATTER defined"); thrM("•Repr: Cannot represent non-numbers with -DFORMATTER=0");
#endif #endif
} }
} }
@ -109,7 +109,7 @@ B fmt_c1(B t, B x) {
#if FORMATTER #if FORMATTER
return bqn_fmt(x); return bqn_fmt(x);
#else #else
thrM("•Fmt isn't supported without FORMATTER defined"); thrM("•Fmt isn't supported with -DFORMATTER=0");
#endif #endif
} }

View File

@ -822,11 +822,13 @@ void g_pst(void) { vm_pstLive(); fflush(stdout); fflush(stderr); }
#else #else
#define ONLY_ALWAYS #define ONLY_ALWAYS
#endif #endif
extern bool cbqn_initialized;
static void warn_ln(B x) { static void warn_ln(B x) {
if (isArr(x)) fprint_fmt(stderr, "%s items, %S, shape=%H\n", IA(x), eltype_repr(TI(x,elType)), x); if (isArr(x)) fprint_fmt(stderr, "%s items, %S, shape=%H\n", IA(x), eltype_repr(TI(x,elType)), x);
else { else {
fprintf(stderr, "atom: "); fprintf(stderr, "atom: ");
fprintsB(stderr, x = bqn_fmt(inc(x))); dec(x); if (cbqn_initialized && FORMATTER) { fprintsB(stderr, x = bqn_fmt(inc(x))); dec(x); }
else fprintI(stderr, x);
fputc('\n', stderr); fputc('\n', stderr);
} }
} }

View File

@ -789,8 +789,10 @@ int main(int argc, char* argv[]) {
} }
case 'L': { repl_init(); break; } // just initialize. mostly for perf testing case 'L': { repl_init(); break; } // just initialize. mostly for perf testing
case 'p': { repl_init(); REQARG(p); case 'p': { repl_init(); REQARG(p);
B r = bqn_fmt(gsc_exec_inline(utf8Decode0(argv[i++]), m_c8vec_0("(-p)"), emptySVec())); B r = gsc_exec_inline(utf8Decode0(argv[i++]), m_c8vec_0("(-p)"), emptySVec());
printsB(r); dec(r); if (FORMATTER) { r = bqn_fmt(r); printsB(r); }
else { printI(r); }
dec(r);
printf("\n"); printf("\n");
break; break;
} }