From 4773283f8fd2bcfcefcc1811a5ded4bf1164a966 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Sat, 8 Oct 2016 18:33:39 -0500 Subject: [PATCH] Extend type of vector->list. Closes #436. --- typed-racket-lib/typed-racket/base-env/base-env.rkt | 3 ++- typed-racket-test/unit-tests/typecheck-tests.rkt | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/typed-racket-lib/typed-racket/base-env/base-env.rkt b/typed-racket-lib/typed-racket/base-env/base-env.rkt index fdafafca..3480cae1 100644 --- a/typed-racket-lib/typed-racket/base-env/base-env.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-env.rkt @@ -837,7 +837,8 @@ ;; Section 4.11 (Vectors) [vector? (make-pred-ty (make-VectorTop))] -[vector->list (-poly (a) (-> (-vec a) (-lst a)))] +[vector->list (-poly (a) (cl->* (-> (-vec a) (-lst a)) + (-> (make-VectorTop) (-lst Univ))))] [list->vector (-poly (a) (-> (-lst a) (-vec a)))] [vector-length ((make-VectorTop) . -> . -Index)] [vector (-poly (a) (->* (list) a (-vec a)))] diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index 328f2905..bdb2ef3a 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -554,6 +554,11 @@ [tc-e (vector-immutable 2 "3" #t) (make-HeterogeneousVector (list -Integer -String -Boolean))] [tc-e (make-vector 4 1) (-vec -Integer)] [tc-e (build-vector 4 (lambda (x) 1)) (-vec -Integer)] + [tc-e (let ([x : Any (vector 1 2 3)]) + (if (vector? x) + (vector->list x) + '())) + (-lst Univ)] [tc-e (range 0) -Null] [tc-e (range 1) (-lst* -Zero)] [tc-e (range 4) (-lst -Byte)]