Fix parsing of dotted rest when there is an expected type.

Closes PR 13646.
This commit is contained in:
Eric Dobson 2013-03-31 13:58:10 -07:00
parent 5669c372b2
commit 3d49087ea3
2 changed files with 18 additions and 1 deletions

View File

@ -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]))

View File

@ -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))))]