From 073263527cbd25cda50a4fa1d324e28bcd012420 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Sat, 14 Jul 2012 22:04:22 -0400 Subject: [PATCH] Improve type of `values` when applied to one argument. Closes PR 12846. original commit: 2aaeec4520cb82f847fa57412b60a023ba7f3fa7 --- collects/tests/typed-racket/succeed/pr11545+11776.rkt | 2 +- collects/tests/typed-racket/succeed/values-object.rkt | 7 +++++++ collects/typed-racket/base-env/base-env.rkt | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 collects/tests/typed-racket/succeed/values-object.rkt diff --git a/collects/tests/typed-racket/succeed/pr11545+11776.rkt b/collects/tests/typed-racket/succeed/pr11545+11776.rkt index ed867a90..a6548877 100644 --- a/collects/tests/typed-racket/succeed/pr11545+11776.rkt +++ b/collects/tests/typed-racket/succeed/pr11545+11776.rkt @@ -7,4 +7,4 @@ (define (thing) ((inst stuff))) -(inst values) +(inst values Any) diff --git a/collects/tests/typed-racket/succeed/values-object.rkt b/collects/tests/typed-racket/succeed/values-object.rkt new file mode 100644 index 00000000..3504fdaf --- /dev/null +++ b/collects/tests/typed-racket/succeed/values-object.rkt @@ -0,0 +1,7 @@ +#lang typed/racket + +(define v values) +;(define v identity) + +(: f (Boolean -> #f)) +(define (f x) (if (v x) #f x)) diff --git a/collects/typed-racket/base-env/base-env.rkt b/collects/typed-racket/base-env/base-env.rkt index 2a2b174e..ee0a3016 100644 --- a/collects/typed-racket/base-env/base-env.rkt +++ b/collects/typed-racket/base-env/base-env.rkt @@ -1366,7 +1366,8 @@ -[values (-polydots (a) (null (a a) . ->... . (make-ValuesDots null a 'a)))] +[values (-polydots (b a) (cl->* (->acc (list b) b null) + (null (a a) . ->... . (make-ValuesDots null a 'a))))] [call-with-values (-polydots (b a) ((-> (make-ValuesDots null a 'a)) (null (a a) . ->... . b) . -> . b))] [read-accept-reader (-Param B B)]