diff -bup ../../../4/foreigners/trunk/foreigners.scm foreigners.scm --- ../../../4/foreigners/trunk/foreigners.scm 2018-06-26 12:56:21.529909822 +0200 +++ foreigners.scm 2018-07-02 15:10:51.870303853 +0200 @@ -11,6 +11,7 @@ ;; -> (let ((%begin (r 'begin)) (%car (r 'car)) (%cdr (r 'cdr))) ;; body ...) (define-syntax with-renamed + (er-macro-transformer (lambda (f r c) (##sys#check-syntax 'with-renamed f '(_ _ (_ . _) . _)) (let ((renamer (cadr f)) @@ -22,17 +23,17 @@ ,(map (lambda (x) `(,(munger x) (,renamer ',x))) identifiers) - ,@body))))) + ,@body)))))) ;;; define-foreign-record-type (module foreigners (define-foreign-record-type define-foreign-enum-type) - (import scheme chicken foreign) + (import scheme (chicken base) (chicken foreign) (chicken syntax)) (define-syntax define-foreign-record-type - (lambda (f r c) + (er-macro-transformer (lambda (f r c) (##sys#check-syntax 'define-foreign-record-type f '(_ _ . _)) (let ((name (cadr f)) @@ -174,17 +175,17 @@ ;; [else (syntax-error 'define-foreign-record ;; "bad slot spec" slot)] ))) - slots)))))))) + slots))))))))) ;;; define-foreign-enum-type -(require-library matchable) (import-for-syntax matchable) (import-for-syntax renaming) ;; Ignored case where typename is a symbol, for now. ;; Permit string or symbol as REALTYPE in ENUMSPEC. (define-syntax define-foreign-enum-type + (er-macro-transformer (lambda (f r c) (match f @@ -254,7 +255,7 @@ ; handle missing default-value ((_ (type-name native-type) . rest) `(define-foreign-enum-type (,type-name ,native-type '()) ,@rest)) - )))) + ))))) ;;; Testing