From 4ab84c05f6626723c63e4ef68fec118ceb1b827d Mon Sep 17 00:00:00 2001 From: dzaima Date: Sun, 16 Jun 2024 13:56:18 +0300 Subject: [PATCH] =?UTF-8?q?handle=20header=20[=E2=80=A6]=E2=86=90rank0=20p?= =?UTF-8?q?roperly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vm.c | 5 ++++- test/cases/syntax.bqn | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index 51139e93..1a74ec90 100644 --- a/src/vm.c +++ b/src/vm.c @@ -503,7 +503,10 @@ NOINLINE Block* compileAll(B bcq, B objs, B allBlocks, B allBodies, B indices, B FORCE_INLINE bool v_merge(Scope* pscs[], B s, B x, bool upd, bool hdr) { assert(TY(s) == t_arrMerge); B o = c(WrappedObj,s)->obj; - if (!isArr(x) || RNK(x)==0) thrF("[…]%c𝕩: 𝕩 cannot have rank 0", upd? U'↩' : U'←'); + if (!isArr(x) || RNK(x)==0) { + if (hdr) return false; + else thrF("[…]%c𝕩: 𝕩 cannot have rank 0", upd? U'↩' : U'←'); + } B* op = harr_ptr(o); usz oia = IA(o); diff --git a/test/cases/syntax.bqn b/test/cases/syntax.bqn index e66faa7f..0ba9cae4 100644 --- a/test/cases/syntax.bqn +++ b/test/cases/syntax.bqn @@ -4,6 +4,10 @@ a←"zero"‿"one" ⋄ !a≡a⊸{𝕩?1⊑𝕨;0⊑𝕨}¨0‿1 !"No header matched argument" % { 𝕊a‿b: a+b ; d𝕊a‿b‿c: a+b+c} ↕⥊3 !"No header matched argument" % {d𝕊a‿b: a+b ; 𝕊a‿b‿c: a+b+c} ↕⥊2 +{[a,b]: 1; 9} @ %% 9 +{[a,b]: 1; 9} <4 %% 9 +{[a,b]: 1; 9} ↕4 %% 9 +{[a,b]: 1; 9} ↕4‿2 %% 9 {𝕊a‿b: a+b ; 𝕊a‿b‿c: a+b+c} ↕⥊2 %% ⟨1⟩ {𝕊a‿b: a+b ; 𝕊a‿b‿c: a+b+c} ↕⥊3 %% ⟨3⟩ {4=⊑𝕩? "four" ; "idk: "‿𝕩}4+↕3 %% "four"