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"