From 7947f86833188e00a8af5a0a46eddb5cd6db8b7c Mon Sep 17 00:00:00 2001 From: dzaima Date: Thu, 22 May 2025 04:49:36 +0300 Subject: [PATCH] =?UTF-8?q?basic=20fix=20for=20`(2=E2=80=BF3=E2=A5=8A0?= =?UTF-8?q?=C3=B70)=E2=8C=BE(0=E2=80=BF0=E2=8A=B8=E2=8A=8F)=202=E2=80=BF3?= =?UTF-8?q?=E2=A5=8A1`=20erroring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/select.c | 4 +++- test/cases/under.bqn | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/builtins/select.c b/src/builtins/select.c index cb7c4858..8ee1ed23 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -509,7 +509,8 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu case el_c16: rep = toC16Any(rep); ra = reuse? a(REUSE(x)) : cpyC16Arr(x); goto do_u16; case el_i32: rep = toI32Any(rep); ra = reuse? a(REUSE(x)) : cpyI32Arr(x); goto do_u32; case el_c32: rep = toC32Any(rep); ra = reuse? a(REUSE(x)) : cpyC32Arr(x); goto do_u32; - case el_f64: rep = toF64Any(rep); ra = reuse? a(REUSE(x)) : cpyF64Arr(x); goto do_f64; + case el_f64: if (csz!=1) { reuse = false; goto generic; } + rep = toF64Any(rep); ra = reuse? a(REUSE(x)) : cpyF64Arr(x); goto do_f64; case el_bit: { ra = reuse? a(REUSE(x)) : cpyBitArr(x); TyArr* na = toBitArr(rep); rep = taga(na); u64* np = bitarrv_ptr(na); @@ -531,6 +532,7 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu goto dec_ret_ra; } case el_B: { + generic:; ra = reuse? a(REUSE(x)) : cpyHArr(x); B* rp = harrv_ptr(ra); SGet(rep) diff --git a/test/cases/under.bqn b/test/cases/under.bqn index fe58e64b..264159f7 100644 --- a/test/cases/under.bqn +++ b/test/cases/under.bqn @@ -227,10 +227,12 @@ n←500 ⋄ a←↕n ⋄ i←(-n)+↕2×n ⋄ r←⌽(2×n)⥊a ⋄ ! (⌽a) ≡ @𝕊·: @; 𝕨𝕊0: (1‿0‿1‿1∾6⥊0) {Repl⌾(𝕨⊸/) 𝕩}_res _eqvar 10⥊0‿1 - "𝔽⌾(a⊸/): Incompatible result elements" HasMsg (1‿0‿2∾7⥊0) {Repl⌾(𝕨⊸/) 𝕩}_res _mod _eqvar 10⥊0‿1 + "𝔽⌾(a⊸/): Incompatible result elements" HasMsg (1‿0‿2∾7⥊0) { Repl ⌾(𝕨⊸/) 𝕩}_res _mod _eqvar 10 ⥊0‿1 + "⌾: Incompatible result elements in structural Under" HasMsg (1‿0‿2∾7⥊0) {(3⥊˘Repl)⌾(𝕨⊸/) 𝕩}_res _mod _eqvar 10‿3⥊0‿1 1‿2‿5 {Repl⌾(𝕨⊸⊏) 𝕩}_res _eqvar 10⥊0‿1 - "𝔽⌾(a⊸⊏): Incompatible result elements" HasMsg 1‿4‿4 {Repl⌾(𝕨⊸⊏) 𝕩}_res _mod _eqvar 10⥊0‿1 + "𝔽⌾(a⊸⊏): Incompatible result elements" HasMsg 1‿4‿4 { Repl ⌾(𝕨⊸⊏) 𝕩}_res _mod _eqvar 10 ⥊0‿1 + "𝔽⌾(a⊸⊏): Incompatible result elements" HasMsg 1‿4‿4 {(3⥊˘Repl)⌾(𝕨⊸⊏) 𝕩}_res _mod _eqvar 10‿3⥊0‿1 ; 𝕨𝕊1: "⌾: Incompatible result elements in structural Under" HasMsg 1‿2‿2 {Repl⌾⊑⌾(𝕨⊸⊏¨) ⋈𝕩}_res _mod 0‿1‿0