Fix internal error for vector type-checking

If multiple values were expected and not provided
when type-checking a vector expression, TR would throw
an internal error.

Thanks to Pierpaolo for the report!

(cherry picked from commit 29bce22d0b)
This commit is contained in:
Asumu Takikawa 2013-06-21 14:14:36 -04:00 committed by Ryan Culpepper
parent c4c85ce9c8
commit cf8f806db7
2 changed files with 14 additions and 1 deletions

View File

@ -0,0 +1,13 @@
#;
(exn:pred #rx"expected 2 values, but got 1")
#lang typed/racket
;; This test ensures that the following snippet doesn't
;; result in an internal error.
;;
;; see
;; http://lists.racket-lang.org/dev/archive/2013-January/011614.html
(: f (-> (Values String (Vector Integer Integer))))
(define (f) (vector 1 2))

View File

@ -136,4 +136,4 @@
(ret (make-HeterogeneousVector (ret (make-HeterogeneousVector
(for/list ((e (in-syntax #'(args ...)))) (for/list ((e (in-syntax #'(args ...))))
(generalize (tc-expr/t e)))))] (generalize (tc-expr/t e)))))]
[_ (int-err "bad expected: ~a" expected)]))) [_ (ret Err)])))