improved contract libraries handling of #%app for provide/contract'd variables

svn: r7590

original commit: 359196ae82ee061117fdb0bb1b1acb45b3f8b013
This commit is contained in:
Robby Findler 2007-10-29 21:07:43 +00:00
parent d0c009085d
commit 204dee9ec5

View File

@ -5211,6 +5211,22 @@ so that propagation occurs.
(c:case-> (c:-> integer? integer?)
(c:-> integer? integer? integer?))))))
;; tests that contracts pick up the #%app from the context
;; instead of always using the mzscheme #%app.
(test/spec-passed
'provide/contract25
'(begin
(eval '(module provide/contract25a mzscheme
(require (lib "contract.ss"))
(provide/contract [seventeen integer?])
(define seventeen 17)))
(eval '(module provide/contract25b mzscheme
(require provide/contract25a)
(let-syntax ([#%app (syntax-rules ()
[(#%app e ...) (list e ...)])])
(seventeen 18))))
(eval '(require provide/contract25b))))
(contract-error-test
#'(begin
(eval '(module pce1-bug mzscheme