diff --git a/src/ffi.c b/src/ffi.c index 4e5adb88..f46e660f 100644 --- a/src/ffi.c +++ b/src/ffi.c @@ -333,7 +333,13 @@ static u32 styG(B x) { B sq = squeeze_chrTry(incG(x), &xe); bool ok = elChrOk(sq, umax, xe); decG(sq); - if (!ok) thrF("FFI: Array provided for :c%S contained %S", desc+1, genericDesc(nonChr)); + if (!ok) { + PLAINLOOP for (ux i = 0; i < IA(x); i++) { + u32 c = o2cG(IGetU(x,i)); + if (c > umax) thrF("FFI: Array provided for :c%S contained @+%i", desc+1, c); + } + fatal("expected ffi_anyRange to error"); + } } } #else diff --git a/test/cases/ffi.bqn b/test/cases/ffi.bqn index 543d02a1..d112cf7b 100644 --- a/test/cases/ffi.bqn +++ b/test/cases/ffi.bqn @@ -177,15 +177,15 @@ !"FFI: Array provided for :c8 contained number" % f←@•FFI""‿"bqn_init"‿">*i8:c8" ⋄ F ⋈4 !"FFI: Array provided for :c8 contained number" % f←@•FFI""‿"bqn_init"‿">*i8:c8" ⋄ F "Ah"•internal.Variation⋈4 -!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i8:c8" ‿"i8" ⋄ F "hello"‿1000 -!"FFI: Array provided for :c8 contained object of unknown type" % f←@•FFI""‿"bqn_init"‿"*i8:c8" ‿"i8" ⋄ F "hello ⍉"‿1000 -!"FFI: Array provided for :c8 contained object of unknown type" % f←@•FFI""‿"bqn_init"‿"*i8:c8" ‿"i8" ⋄ F "hello 𝕩"‿1000 -!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i16:c16"‿"i8" ⋄ F "hello"‿1000 -!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i16:c16"‿"i8" ⋄ F "hello ⍉"‿1000 -!"FFI: Array provided for :c16 contained object of unknown type" % f←@•FFI""‿"bqn_init"‿"*i16:c16"‿"i8" ⋄ F "hello 𝕩"‿1000 -!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i32:c32"‿"i8" ⋄ F "hello"‿1000 -!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i32:c32"‿"i8" ⋄ F "hello ⍉"‿1000 -!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i32:c32"‿"i8" ⋄ F "hello 𝕩"‿1000 +!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i8:c8" ‿"i8" ⋄ F "hello"‿1000 +!"FFI: Array provided for :c8 contained @+9033" % f←@•FFI""‿"bqn_init"‿"*i8:c8" ‿"i8" ⋄ F "hello ⍉"‿1000 +!"FFI: Array provided for :c8 contained @+120169" % f←@•FFI""‿"bqn_init"‿"*i8:c8" ‿"i8" ⋄ F "hello 𝕩"‿1000 +!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i16:c16"‿"i8" ⋄ F "hello"‿1000 +!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i16:c16"‿"i8" ⋄ F "hello ⍉"‿1000 +!"FFI: Array provided for :c16 contained @+120169" % f←@•FFI""‿"bqn_init"‿"*i16:c16"‿"i8" ⋄ F "hello 𝕩"‿1000 +!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i32:c32"‿"i8" ⋄ F "hello"‿1000 +!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i32:c32"‿"i8" ⋄ F "hello ⍉"‿1000 +!"FFI: improper value for i8" % f←@•FFI""‿"bqn_init"‿"*i32:c32"‿"i8" ⋄ F "hello 𝕩"‿1000 %USE defs ⋄ f←@•FFI"*"‿"memcpy"‿"&i8"‿"*i8:c8"‿size_t ⋄ 1⊑F ⟨↕5, "Ah"•internal.Variation"hello", 5⟩ %% 104‿101‿108‿108‿111