From 74ac6a4d222e4e5b70eccba20d9b25ac901e4b70 Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Fri, 24 Jun 2011 16:17:25 -0400 Subject: [PATCH] Correctly recreate Scopes. Closes PR 10552. Closes PR 11532. original commit: ce0f542028e9dfe5b18964223af8dad32ce04f57 --- collects/tests/typed-scheme/succeed/pr10552.rkt | 5 +++++ collects/tests/typed-scheme/succeed/pr11532.rkt | 4 ++++ collects/typed-scheme/rep/type-rep.rkt | 8 ++++---- 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 collects/tests/typed-scheme/succeed/pr10552.rkt create mode 100644 collects/tests/typed-scheme/succeed/pr11532.rkt diff --git a/collects/tests/typed-scheme/succeed/pr10552.rkt b/collects/tests/typed-scheme/succeed/pr10552.rkt new file mode 100644 index 00000000..64b4ae7b --- /dev/null +++ b/collects/tests/typed-scheme/succeed/pr10552.rkt @@ -0,0 +1,5 @@ +#lang typed-scheme + +(: z (All (A) (A -> ((Listof A) A -> (Listof A))))) +(define (z _) (lambda (x y) (cons y x))) +(define zz (z cons)) diff --git a/collects/tests/typed-scheme/succeed/pr11532.rkt b/collects/tests/typed-scheme/succeed/pr11532.rkt new file mode 100644 index 00000000..f04b6b26 --- /dev/null +++ b/collects/tests/typed-scheme/succeed/pr11532.rkt @@ -0,0 +1,4 @@ +#lang typed/racket +(define-type T (All [X Y ...] String)) +(: f (All [A] (T -> Any))) +(define f void) diff --git a/collects/typed-scheme/rep/type-rep.rkt b/collects/typed-scheme/rep/type-rep.rkt index da1a7b2e..b9aa0842 100644 --- a/collects/typed-scheme/rep/type-rep.rkt +++ b/collects/typed-scheme/rep/type-rep.rkt @@ -517,10 +517,10 @@ [#:Mu (Scope: body) (*Mu (*Scope (loop (add1 outer) body)))] [#:PolyDots n body* (let ([body (remove-scopes n body*)]) - (*PolyDots n (*Scope (loop (+ n outer) body))))] + (*PolyDots n (add-scopes n (loop (+ n outer) body))))] [#:Poly n body* (let ([body (remove-scopes n body*)]) - (*Poly n (*Scope (loop (+ n outer) body))))]))) + (*Poly n (add-scopes n (loop (+ n outer) body))))]))) (let ([n (length names)]) (let loop ([ty ty] [names names] [count (sub1 n)]) (if (zero? count) @@ -568,10 +568,10 @@ [#:Mu (Scope: body) (*Mu (*Scope (loop (add1 outer) body)))] [#:PolyDots n body* (let ([body (remove-scopes n body*)]) - (*PolyDots n (*Scope (loop (+ n outer) body))))] + (*PolyDots n (add-scopes n (loop (+ n outer) body))))] [#:Poly n body* (let ([body (remove-scopes n body*)]) - (*Poly n (*Scope (loop (+ n outer) body))))]))) + (*Poly n (add-scopes n (loop (+ n outer) body))))]))) (let ([n (length images)]) (let loop ([ty (remove-scopes n sc)] [images images] [count (sub1 n)]) (if (zero? count)