diff options
author | dzaima <dzaimagit@gmail.com> | 2024-04-04 03:47:36 +0300 |
---|---|---|
committer | dzaima <dzaimagit@gmail.com> | 2024-04-04 03:54:55 +0300 |
commit | 3870189f85e38478a6e0d3101f677dd5744ec721 (patch) | |
tree | e9776d076c9df7a7f12c016973c5151a77c24f6f | |
parent | a75522c738e1a16fa756a1247766de2cbd070feb (diff) |
fix 3‿3⍒"a" & "aa"⍒3‿3
-rw-r--r-- | src/builtins/grade.h | 15 | ||||
-rw-r--r-- | test/cases/prims.bqn | 2 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/builtins/grade.h b/src/builtins/grade.h index 7890d80d..605c50cd 100644 --- a/src/builtins/grade.h +++ b/src/builtins/grade.h @@ -416,7 +416,10 @@ B GRADE_CAT(c2)(B t, B w, B x) { B r; Arr* ra; - if (wia==0 | xia==0) goto zeroes_done; + if (wia==0 | xia==0) { + ra = allZeroes(xia); + goto copysh_done; + } if (wia==1) { B c = IGet(w, 0); if (LIKELY(we<el_B & xe<el_B)) { @@ -502,11 +505,14 @@ B GRADE_CAT(c2)(B t, B w, B x) { w=toI32Any(w); x=toI32Any(x); #endif } else { - ra = reshape_one(xia, m_f64(wia)); + ra = GRADE_UD(reshape_one(xia, m_f64(wia)), allZeroes(xia)); goto copysh_done; } } else { // w is character - if (elNum(xe)) goto zeroes_done; + if (elNum(xe)) { + ra = GRADE_UD(allZeroes(xia), reshape_one(xia, m_f64(wia))); + goto copysh_done; + } we = el_c32; w=toC32Any(w); x=toC32Any(x); @@ -552,9 +558,6 @@ B GRADE_CAT(c2)(B t, B w, B x) { decG(w);decG(x); return r; - zeroes_done:; - ra = allZeroes(xia); - copysh_done:; r = taga(arr_shCopy(ra, x)); goto done; diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn index ecaa9d25..307a34be 100644 --- a/test/cases/prims.bqn +++ b/test/cases/prims.bqn @@ -330,6 +330,8 @@ w←1‿1⥊1 ⋄ x←2⥊1 ⋄ w‿x <¨↩ ⋄ {! (∾⟨•Repr𝕩,": Expe # 𝕨⍋𝕩 !"⍋: 𝕨 must be sorted" % a←-¨ ∧⋈¨ ↕10 ⋄ a⍋⋈¨↕10 +⍷∘(⥊¨)⊸({! (𝕨⍋𝕩) ≡ (≢𝕩)⥊ (≠𝕨)×0≥𝕨 •Cmp○⊑ 𝕩}⌜) ⟨3, <3, 10⥊3, 'a', <'a', 10⥊'a'⟩ +⍷∘(⥊¨)⊸({! (𝕨⍒𝕩) ≡ (≢𝕩)⥊ (≠𝕨)×0≤𝕨 •Cmp○⊑ 𝕩}⌜) ⟨3, <3, 10⥊3, 'a', <'a', 10⥊'a'⟩ # 𝕨|𝕩 {x←2⥊𝕨|𝕩 ⋄ ! x •internal.EEqual 𝕨‿𝕨|𝕩‿𝕩 ⋄ ! x •internal.EEqual 𝕨|𝕩‿𝕩}⌜˜ ⍷∧∾⟜- ⟨π, ∞, 0÷0, 0.5, 0.1⟩∾(↕10)∾⥊(¯4+↕9)+⌜2⋆7‿8‿15‿31‿32 |