added scheme/fixnum

svn: r17391

original commit: 195d608fe57e13e07397d0c59e86c22e9c214bfb
This commit is contained in:
Robby Findler 2009-12-23 15:41:40 +00:00
commit 227924d8da
2 changed files with 12 additions and 6 deletions

View File

@ -57,14 +57,18 @@
(lambda (stx)
(syntax-case stx ()
[(_ id contract desc)
(with-syntax ([(header result)
(with-syntax ([(header result (body-stuff ...))
(syntax-case #'contract (->d -> values)
[(->d (req ...) () (values [name res] ...))
#'((id req ...) (values res ...))]
#'((id req ...) (values res ...) ())]
[(->d (req ...) () #:pre-cond condition (values [name res] ...))
#'((id req ...) (values res ...) ((bold "Pre-condition: ") (scheme condition) "\n" "\n"))]
[(->d (req ...) () [name res])
#'((id req ...) res)]
#'((id req ...) res ())]
[(->d (req ...) () #:pre-cond condition [name res])
#'((id req ...) res ((bold "Pre-condition: ") (scheme condition) "\n" "\n" ))]
[(->d (req ...) () #:rest rest rest-ctc [name res])
#'((id req ... [rest rest-ctc] (... ...)) res)]
#'((id req ... [rest rest-ctc] (... ...)) res ())]
[(->d (req ...) (one more ...) whatever)
(raise-syntax-error
#f
@ -79,7 +83,7 @@
stx
#'contract)]
[(-> result)
#'((id) result)]
#'((id) result ())]
[(-> whatever ...)
(raise-syntax-error
#f
@ -95,7 +99,7 @@
#'contract)])])
(values
#'[id contract]
#'(defproc header result . desc)
#'(defproc header result body-stuff ... . desc)
#'(scribble/manual)
#'id))])))

View File

@ -108,7 +108,9 @@ form.}
(proc-doc id contract desc-expr)
([contract (-> result)
(->d (arg ...) () (values [id result] ...))
(->d (arg ...) () #:pre-cond expression (values [id result] ...))
(->d (arg ...) () [id result])
(->d (arg ...) () #:pre-cond expression [id result])
(->d (arg ...) () #:rest id rest [id result])])]{
Like @scheme[proc-doc], but supporting contract forms that embed