Check nested and non-nested define/contracts and how they interact.

svn: r11665

original commit: 32d4b3463007fbc097b06e79eebc50906c6b3582
This commit is contained in:
Stevie Strickland 2008-09-12 00:02:46 +00:00
parent 4ba02b716c
commit 68c83b2a54

View File

@ -1621,7 +1621,52 @@ of the contract library does not change over time.
x)) x))
(eval '(require 'contract-test-suite-define1)))) (eval '(require 'contract-test-suite-define1))))
(test/spec-failed
'define/contract8
'(let ()
(define/contract (a n)
(-> number? number?)
(define/contract (b m)
(-> number? number?)
(+ m 1))
(b (zero? n)))
(a 5))
"a")
(test/spec-failed
'define/contract8
'(let ()
(define/contract (a n)
(-> number? number?)
(define/contract (b m)
(-> number? number?)
#t)
(b (add1 n)))
(a 5))
"b")
(test/spec-passed
'define/contract9
'(let ()
(define/contract (f n)
(-> number? number?)
(+ n 1))
(define/contract (g b m)
(-> boolean? number? number?)
(if b (f m) (f #t)))
(g #t 3)))
(test/spec-failed
'define/contract9
'(let ()
(define/contract (f n)
(-> number? number?)
(+ n 1))
(define/contract (g b m)
(-> boolean? number? number?)
(if b (f m) (f #t)))
(g #f 3))
"g")
; ;
; ;