From 9098c94e9c07a7f0d9d7e5f1213efa70da5f5176 Mon Sep 17 00:00:00 2001 From: Stevie Strickland Date: Tue, 17 Feb 2009 20:48:04 +0000 Subject: [PATCH] Add first-order checks for free variable contracts, and tests for everything. svn: r13706 --- collects/tests/mzscheme/contract-test.ss | 64 ++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/collects/tests/mzscheme/contract-test.ss b/collects/tests/mzscheme/contract-test.ss index c8b3733f63..889578f278 100644 --- a/collects/tests/mzscheme/contract-test.ss +++ b/collects/tests/mzscheme/contract-test.ss @@ -2401,6 +2401,70 @@ (eval '(require 'foo-dc18))) "(unit U@)") + (test/spec-failed + 'define/contract19 + '(let () + (define y 3) + (define/contract (f n) + (-> number? number?) + #:freevar y (-> number? boolean?) + 3) + 1) + "top-level") + + (test/spec-passed + 'define/contract20 + '(let () + (define y (lambda (n) 4)) + (define/contract (f n) + (-> number? number?) + #:freevar y (-> number? boolean?) + 3) + 1)) + + (test/spec-passed + 'define/contract21 + '(let () + (define y (lambda (n) 4)) + (define/contract (f n) + (-> number? number?) + #:freevar y (-> number? boolean?) + (if (y n) 3 1)) + 1)) + + (test/spec-failed + 'define/contract22 + '(let () + (define y 4) + (define/contract (f n) + (-> number? number?) + #:freevar y (-> number? boolean?) + 3) + 1) + "top-level") + + (test/spec-failed + 'define/contract23 + '(let () + (define y (lambda (n) #t)) + (define/contract (f n) + (-> number? number?) + #:freevar y (-> number? number?) + (y n)) + (f 5)) + "top-level") + + (test/spec-failed + 'define/contract24 + '(let () + (define y (lambda (n) 4)) + (define/contract (f n) + (-> number? number?) + #:freevar y (-> number? boolean?) + (if (y #t) 3 1)) + (f 5)) + "(function f)") + ; ;