diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/infer/infer-unit.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/infer/infer-unit.rkt index dcdd4e29..4e1c1a3e 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/infer/infer-unit.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/infer/infer-unit.rkt @@ -324,7 +324,8 @@ (cgen V (cons dbound X) Y s-dty t-rest)) vars dbound)] [else - (cgen/seq V X Y (seq ss (uniform-end (substitute Univ dbound s-dty))) t-seq)])])) + (extend-tvars (list dbound) + (cgen/seq (cons dbound V) X Y (seq ss (uniform-end s-dty)) t-seq))])])) (define/cond-contract (cgen/arr V X Y s-arr t-arr) ((listof symbol?) (listof symbol?) (listof symbol?) arr? arr? . -> . (or/c #f cset?)) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/infer-tests.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/infer-tests.rkt index 89e73759..f91bff3d 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/infer-tests.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/infer-tests.rkt @@ -181,6 +181,10 @@ (infer-t (-lst -Symbol) (make-ListDots (-v b) 'b) #:indices '(b) #:result [(make-ListDots (-v b) 'b) (-lst -Symbol)]) (infer-t (make-ListDots (-v b) 'b) (-lst Univ) #:indices '(b)) + (infer-t (make-ListDots (-v a) 'a) (-lst Univ)) + (infer-t (make-ListDots (-lst (-v a)) 'a) (-lst (-lst Univ))) + (infer-t (make-ListDots (-vec (-v a)) 'a) (-lst (-vec Univ)) #:fail) + (infer-t (make-ListDots (-v a) 'b) (make-ListDots -Symbol 'b) #:vars '(a)) (infer-t (make-ListDots (-v b) 'b) (make-ListDots -Symbol 'b) #:indices '(b)) (infer-t (make-ListDots -Symbol 'b) (make-ListDots (-v b) 'b) #:indices '(b))