~ chicken-core (chicken-5) 43a128fc1325d1e5a3004828f5017db86736a9b1
commit 43a128fc1325d1e5a3004828f5017db86736a9b1
Author: megane <meganeka@gmail.com>
AuthorDate: Sat May 22 08:13:45 2021 +0300
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Fri Jul 30 13:13:07 2021 +1200
FFI: Make scrutinizer accept locatives for nonnull-c-pointer arguments
E.g. annotate (foreign-lambda* void ((nonnull-c-pointer x)) "return;")
with
((or pointer locative) -> undefined)
instead of current
(pointer -> undefined)
Signed-off-by: Evan Hanson <evhan@foldling.org>
diff --git a/support.scm b/support.scm
index c7408903..7929334c 100644
--- a/support.scm
+++ b/support.scm
@@ -1392,7 +1392,10 @@
(if (eq? 'arg mode)
'(or false pointer locative)
'(or false pointer)))
- ((nonnull-c-pointer) 'pointer)
+ ((nonnull-c-pointer)
+ (if (eq? 'arg mode)
+ '(or pointer locative)
+ 'pointer))
((c-string c-string* unsigned-c-string unsigned-c-string*)
'(or false string))
((c-string-list c-string-list*)
@@ -1408,7 +1411,10 @@
'(or false pointer)))
((const) (foreign-type->scrutiny-type (cadr t) mode))
((enum) 'integer)
- ((nonnull-pointer nonnull-c-pointer) 'pointer)
+ ((nonnull-pointer nonnull-c-pointer)
+ (if (eq? 'arg mode)
+ '(or pointer locative)
+ 'pointer))
(else '*)))
(else '*)))))))
Trap