diff --git a/collects/tests/typed-scheme/unit-tests/parse-type-tests.ss b/collects/tests/typed-scheme/unit-tests/parse-type-tests.ss index ded0c48fbe..aa3882fd38 100644 --- a/collects/tests/typed-scheme/unit-tests/parse-type-tests.ss +++ b/collects/tests/typed-scheme/unit-tests/parse-type-tests.ss @@ -75,6 +75,9 @@ [(U Number Boolean Number) (Un N B)] [(U Number Boolean 1) (Un N B)] [(All (a) (Listof a)) (-poly (a) (make-Listof a))] + [(All (a ...) (a ... a -> Integer)) (-polydots (a) ( (list) (a a) . ->... . -Integer))] + [(∀ (a) (Listof a)) (-poly (a) (make-Listof a))] + [(∀ (a ...) (a ... a -> Integer)) (-polydots (a) ( (list) (a a) . ->... . -Integer))] [(case-lambda (Number -> Boolean) (Number Number -> Number)) (cl-> [(N) B] [(N N) N])] [1 (-val 1)] diff --git a/collects/typed-scheme/private/parse-type.ss b/collects/typed-scheme/private/parse-type.ss index 88da572e4d..b8e08515f7 100644 --- a/collects/typed-scheme/private/parse-type.ss +++ b/collects/typed-scheme/private/parse-type.ss @@ -154,7 +154,8 @@ (eq? (syntax-e #'quot) 'quote) (-val (syntax-e #'t))] [(All (vars ... v dd) t) - (and (eq? (syntax-e #'All) 'All) + (and (or (eq? (syntax-e #'All) 'All) + (eq? (syntax-e #'All) '∀)) (eq? (syntax-e #'dd) '...) (andmap identifier? (syntax->list #'(v vars ...)))) (let* ([vars (map syntax-e (syntax->list #'(vars ...)))] @@ -165,7 +166,8 @@ (parameterize ([current-tvars (extend-env (cons v vars) (cons tv tvars) (current-tvars))]) (make-PolyDots (append vars (list v)) (parse-type #'t))))] [(All (vars ...) t) - (and (eq? (syntax-e #'All) 'All) + (and (or (eq? (syntax-e #'All) 'All) + (eq? (syntax-e #'All) '∀)) (andmap identifier? (syntax->list #'(vars ...)))) (let* ([vars (map syntax-e (syntax->list #'(vars ...)))] [tvars (map make-F vars)])