summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordzaima <dzaimagit@gmail.com>2024-04-20 21:21:33 +0300
committerdzaima <dzaimagit@gmail.com>2024-04-20 21:21:47 +0300
commitde529e483bcdda2ad571f37070d4a88ed98e9144 (patch)
tree7c7733bf00a4f2b1c313a567093c4c57876432f0
parentce4461ff44b6aff5a6f53015bf0e16c8bde9960d (diff)
make non-Singeli getRange_f64 check first element for integerness
-rw-r--r--src/builtins/search.c5
-rw-r--r--test/cases/prims.bqn2
2 files changed, 5 insertions, 2 deletions
diff --git a/src/builtins/search.c b/src/builtins/search.c
index e7979509..1cd897bb 100644
--- a/src/builtins/search.c
+++ b/src/builtins/search.c
@@ -50,9 +50,10 @@ INIT_GLOBAL RangeFn getRange_fns[el_f64+1];
#define SINGELI_FILE search
#include "../utils/includeSingeli.h"
#else
- #define GETRANGE(T,X) bool getRange_##T(void* x0, i64* res, u64 ia) { \
+ #define GETRANGE(T,CHK) bool getRange_##T(void* x0, i64* res, u64 ia) { \
assert(ia>0); T* x=x0; T min=*x,max=min; \
- for (ux i=1; i<ia; i++) { T c=x[i]; X; \
+ { T c=min; CHK; (void)c; } \
+ for (ux i=1; i<ia; i++) { T c=x[i]; CHK; \
{if(c<min)min=c;} {if(c>max)max=c;} \
} \
res[0]=min; res[1]=max; return 1; \
diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn
index 70bc88aa..0a6ae759 100644
--- a/test/cases/prims.bqn
+++ b/test/cases/prims.bqn
@@ -371,6 +371,8 @@ w←1‿1⥊1 ⋄ x←2⥊1 ⋄ w‿x <¨↩ ⋄ {! (∾⟨•Repr𝕩,": Expe
!"Integer out of range: 1e20" % 1⊸+⍟1e20 0
!"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨1.5⟩
!"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨1e20⟩
+!"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨9, 1.5⟩
+!"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨1.5, 9⟩
# ◶
!"◶: 𝕘 must have rank 1 when index is a number" % 1◶[1‿2,3‿4] 3