diff --git a/collects/tests/typed-racket/succeed/pr13646.rkt b/collects/tests/typed-racket/succeed/pr13646.rkt new file mode 100644 index 0000000000..dfa0fdab2d --- /dev/null +++ b/collects/tests/typed-racket/succeed/pr13646.rkt @@ -0,0 +1,17 @@ +#lang typed/racket + +(struct: (A) Queue ([elem : A])) + +(: qmap : + (All (A B ...) + (case-> + ((A -> A) (Queue A) -> (Queue A)) + ((A B ... B -> A) (Queue A) (Queue B) ... B -> (Queue A))))) +(define qmap + (pcase-lambda: + (A B ...) + [([func : (A -> A)] [deq : (Queue A)]) + deq] + [([func : (A B ... B -> A)] + [deq : (Queue A)] . [deqs : (Queue B) ... B]) + deq])) diff --git a/collects/typed-racket/typecheck/tc-lambda-unit.rkt b/collects/typed-racket/typecheck/tc-lambda-unit.rkt index b1151b7be8..b311c7c0ae 100644 --- a/collects/typed-racket/typecheck/tc-lambda-unit.rkt +++ b/collects/typed-racket/typecheck/tc-lambda-unit.rkt @@ -101,7 +101,7 @@ [(dotted? rest) => (lambda (b) - (let ([dty (get-type rest #:default Univ)]) + (let ([dty (extend-tvars (list b) (get-type rest #:default Univ))]) (with-lexical-env/extend (list rest) (list (make-ListDots dty b)) (check-body))))]