fix arr⌾(is⊸⊏) highrank range check

This commit is contained in:
dzaima 2025-05-23 20:01:43 +03:00
parent 3fe7bd89bf
commit 398d387c22
2 changed files with 4 additions and 2 deletions

View File

@ -987,9 +987,9 @@ B select_ucw(B t, B o, B w, B x) {
usz wia = IA(w); usz wia = IA(w);
B rep; B rep;
if (isArr(o) && RNK(x)>0) { if (isArr(o) && RNK(x)>0) {
usz xia = IA(x); usz xn = *SH(x);
i64 buf[2]; i64 buf[2];
if (wia!=0 && (!getRange_fns[we](tyany_ptr(w), buf, wia) || buf[0]<-(i64)xia || buf[1]>=xia)) { if (wia!=0 && (!getRange_fns[we](tyany_ptr(w), buf, wia) || buf[0]<-(i64)xn || buf[1]>=xn)) {
C2(select, w, x); C2(select, w, x);
fatal("select_ucw expected to error"); fatal("select_ucw expected to error");
} }

View File

@ -73,6 +73,8 @@ n←500 ⋄ a←↕n ⋄ i←(-n)+↕2×n ⋄ r←⌽(2×n)⥊a ⋄ ! (⌽a) ≡
!"𝕨⊏𝕩: Indexing out-of-bounds (10∊𝕨, 10≡≠𝕩)" % %USE evar 910 {01(𝕨)𝕩}_evar 10101 !"𝕨⊏𝕩: Indexing out-of-bounds (10∊𝕨, 10≡≠𝕩)" % %USE evar 910 {01(𝕨)𝕩}_evar 10101
!"𝕨⊏𝕩: Indexing out-of-bounds (10∊𝕨, 10≡≠𝕩)" % %USE evar "ab" {𝕨(910)𝕩}_evar 10"foo" !"𝕨⊏𝕩: Indexing out-of-bounds (10∊𝕨, 10≡≠𝕩)" % %USE evar "ab" {𝕨(910)𝕩}_evar 10"foo"
!"𝕨⊏𝕩: Indexing out-of-bounds (4.611686018427388e18∊𝕨, 3≡≠𝕩)" % %USE eqerr {𝕩((3262)) "abc"}_eqerr "abc", {𝕊: "abc"} !"𝕨⊏𝕩: Indexing out-of-bounds (4.611686018427388e18∊𝕨, 3≡≠𝕩)" % %USE eqerr {𝕩((3262)) "abc"}_eqerr "abc", {𝕊: "abc"}
!"𝕨⊏𝕩: Indexing out-of-bounds (2∊𝕨, 2≡≠𝕩)" % %USE evar (350101) {𝕨(02) 𝕩}_evar 250100
%USE eqvar (200) {𝕨(01) 𝕩}_eqvar 1002 %% 1000
%USE eqerr ! (< {1𝕩((3263)) "abc"}{𝕊: •CurrentError@}¨ "abc", {𝕊: "abc"}) "Integer out of range: 9.223372036854776e18""𝕨⊏𝕩: Indexing out-of-bounds (9.223372036854776e18∊𝕨, 3≡≠𝕩)" %USE eqerr ! (< {1𝕩((3263)) "abc"}{𝕊: •CurrentError@}¨ "abc", {𝕊: "abc"}) "Integer out of range: 9.223372036854776e18""𝕨⊏𝕩: Indexing out-of-bounds (9.223372036854776e18∊𝕨, 3≡≠𝕩)"
!"Expected integer, got 1.1" % %USE eqerr {𝕩((31.1)) 3}_eqerr 3, {1+𝕩} !"Expected integer, got 1.1" % %USE eqerr {𝕩((31.1)) 3}_eqerr 3, {1+𝕩}
!"𝕨⊏𝕩: Indexing out-of-bounds (10∊𝕨, 3≡≠𝕩)" % %USE eqerr {𝕩(101112) 3}_eqerr 3, {1+𝕩} !"𝕨⊏𝕩: Indexing out-of-bounds (10∊𝕨, 3≡≠𝕩)" % %USE eqerr {𝕩(101112) 3}_eqerr 3, {1+𝕩}