From 60b0b0faaae6bc3fd8e80e7dc19ddde115dc0ced Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Sat, 14 Jul 2012 22:30:00 -0400 Subject: [PATCH] Handle arbitrary recursive contracts generated from `Rec` types. original commit: 1dca82784b664e7640053333fec85980159cbd16 --- collects/tests/typed-racket/fail/cnt-err1.rkt | 2 +- collects/typed-racket/private/type-contract.rkt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/collects/tests/typed-racket/fail/cnt-err1.rkt b/collects/tests/typed-racket/fail/cnt-err1.rkt index b0af07e7..38213fb2 100644 --- a/collects/tests/typed-racket/fail/cnt-err1.rkt +++ b/collects/tests/typed-racket/fail/cnt-err1.rkt @@ -1,5 +1,5 @@ #; -(exn-pred exn:fail:contract? ".*expected: T.*" #rx".*contract.*\\(->.*") +(exn-pred exn:fail:contract? ".*pair?.*" #rx".*contract.*\\(->.*") #lang scheme/load diff --git a/collects/typed-racket/private/type-contract.rkt b/collects/typed-racket/private/type-contract.rkt index 14759688..9729e10f 100644 --- a/collects/typed-racket/private/type-contract.rkt +++ b/collects/typed-racket/private/type-contract.rkt @@ -214,7 +214,8 @@ (match-let ([(Mu-name: n-nm _) ty]) (with-syntax ([(n*) (generate-temporaries (list n-nm))]) (parameterize ([vars (cons (list n #'n* #'n*) (vars))]) - #`(flat-rec-contract n* #,(t->c b #:flat #t)))))] + #`(letrec ([n* (recursive-contract #,(t->c b))]) + n*))))] [(Value: #f) #'false/c] [(Instance: (Class: _ _ (list (list name fcn) ...))) (when flat? (exit (fail)))