~ 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