diff --git a/collects/tests/typed-racket/fail/internal-vector-error.rkt b/collects/tests/typed-racket/fail/internal-vector-error.rkt new file mode 100644 index 0000000000..2e27d22395 --- /dev/null +++ b/collects/tests/typed-racket/fail/internal-vector-error.rkt @@ -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)) + diff --git a/collects/typed-racket/typecheck/tc-app/tc-app-hetero.rkt b/collects/typed-racket/typecheck/tc-app/tc-app-hetero.rkt index c320d156f5..6fcb437e9f 100644 --- a/collects/typed-racket/typecheck/tc-app/tc-app-hetero.rkt +++ b/collects/typed-racket/typecheck/tc-app/tc-app-hetero.rkt @@ -136,4 +136,4 @@ (ret (make-HeterogeneousVector (for/list ((e (in-syntax #'(args ...)))) (generalize (tc-expr/t e)))))] - [_ (int-err "bad expected: ~a" expected)]))) + [_ (ret Err)])))