From 3f572809c903bff453f36a48eb57994eeb1c36e0 Mon Sep 17 00:00:00 2001 From: Jon Rafkind Date: Mon, 18 Apr 2011 17:00:42 -0600 Subject: [PATCH] better error message when pre: or post: is used incorrectly --- collects/ffi/unsafe.rkt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/collects/ffi/unsafe.rkt b/collects/ffi/unsafe.rkt index 4cef8d2674..e3bbe8959d 100644 --- a/collects/ffi/unsafe.rkt +++ b/collects/ffi/unsafe.rkt @@ -344,7 +344,7 @@ (let loop ([t orig]) (define (next rest . args) (apply setkey! args) (loop rest)) (syntax-case* t - (type: expr: bind: 1st-arg: prev-arg: pre: post: keywords:) + (type: expr: bind: 1st-arg: prev-arg: pre: post: keywords: =>) id=? [(type: t x ...) (next #'(x ...) 'type #'t)] [(expr: e x ...) (next #'(x ...) 'expr #'e)] @@ -352,7 +352,11 @@ [(1st-arg: id x ...) (next #'(x ...) '1st (cert-id #'id) #t)] [(prev-arg: id x ...) (next #'(x ...) 'prev (cert-id #'id) #t)] ;; in the following two cases pass along orig for recertifying + ;; first explicitly check if the `(id => expr)' form left off + ;; the parentheses + [(pre: p => expr x ...) (err "bad form for `pre:'. Expected either `pre: (id => expression)' or `pre: expression'" #'(pre: p => expr))] [(pre: p x ...) (next #'(x ...) 'pre (with-arg #'p))] + [(post: p => expr x ...) (err "bad form for `post:' Expected either `post: (id => expression)' or `post: expression'" #'(post: p => expr))] [(post: p x ...) (next #'(x ...) 'post (with-arg #'p))] [(keywords: x ...) (let kloop ([ks '()] [xs #'(x ...)])