From 0f691138c9cb368edc5d5ed6324797689e9a75b7 Mon Sep 17 00:00:00 2001 From: dzaima Date: Fri, 19 Jan 2024 18:02:20 +0200 Subject: [PATCH] =?UTF-8?q?basic=20fix=20for=20=E2=80=A2ReBQN{primitives?= =?UTF-8?q?=E2=87=90=E2=9F=A8','=E2=80=BF+=E2=9F=A9}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/load.h | 1 + src/vm.c | 2 +- test/cases/system.bqn | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/load.h b/src/load.h index 98cd55f8..1de3adf1 100644 --- a/src/load.h +++ b/src/load.h @@ -17,6 +17,7 @@ enum { }; #define COMPS_REF(O,N) O->a[comps_##N] #define COMPS_CREF(N) COMPS_REF(comps_curr, N) +#define COMPS_ACTIVE() (comps_curr!=NULL) extern B def_sysNames, def_sysVals; B comps_getPrimitives(void); diff --git a/src/vm.c b/src/vm.c index 6b73795d..e32e1dd1 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1660,7 +1660,7 @@ void unwindEnv(Env* envNew) { } void unwindCompiler() { #if UNWIND_COMPILER - unwindEnv(envStart+o2i64(COMPS_CREF(envPos))); + if (COMPS_ACTIVE()) unwindEnv(envStart+o2i64(COMPS_CREF(envPos))); #endif } diff --git a/test/cases/system.bqn b/test/cases/system.bqn index dc6bfd13..0be77907 100644 --- a/test/cases/system.bqn +++ b/test/cases/system.bqn @@ -49,6 +49,7 @@ ps ← ⟨'÷'‿÷⟩ ⋄ f←•ReBQN {repl⇐"none" ⋄ primitives⇐ps} ⋄ ps ← ⟨'÷'‿÷⟩ ⋄ f←•ReBQN {repl⇐"loose" ⋄ primitives⇐ps} ⋄ ! ps ≡ F "•primitives" ⋄ ! •primitives ≡ •BQN "•primitives" ⋄ ! ps ≡ F "•primitives" f←•ReBQN{primitives⇐⋈'÷'‿- ⋄ system⇐⟨"foo"‿⋈, "oldbqn"‿•BQN, "bqn"⟩} ⋄ {𝕏 "÷5"}¨ F "⟨•foo, •OldBQN, •BQN⟩" %% ⟨⋈"÷5", 0.2, ¯5⟩ +!"Character set conflict: ," % •ReBQN{primitives ⇐ ⟨','‿+⟩} !"•ReBQN: No system value ""baz"" to inherit" % •ReBQN{system⇐⟨"foo"‿"bar", "bqn", "baz", "rebqn"⟩} !"•ReBQN: No system value ""bqn"" to inherit" % f←•ReBQN{system⇐⟨"baz"‿1, "rebqn", "foo"‿2⟩} ⋄ g←F"•ReBQN" ⋄ G {system⇐⟨"foo"‿"bar", "baz", "bqn", "rebqn"⟩} f←•ReBQN{primitives⇐⋈'÷'‿- ⋄ system⇐⟨"primitives", "foo"‿⋈, "bqn", "listsys"⟩} ⋄ F"•primitives‿•listsys" %% ⟨⟨'÷'‿-⟩ ⋄ ⟨"primitives","foo","bqn","listsys"⟩⟩