diff --git a/collects/tests/typed-racket/succeed/case-lambda-rest.rkt b/collects/tests/typed-racket/succeed/case-lambda-rest.rkt new file mode 100644 index 0000000000..1fe24b7dac --- /dev/null +++ b/collects/tests/typed-racket/succeed/case-lambda-rest.rkt @@ -0,0 +1,12 @@ +#lang racket/load + +(module a typed/racket + (provide foo) + (: foo + (case-> + (Number String * -> Number) + (Number String String * -> Number))) + (define (foo x . args) x)) + +(require 'a) +(foo 3 "x") diff --git a/collects/typed-racket/private/type-contract.rkt b/collects/typed-racket/private/type-contract.rkt index 29cd9b23bc..0477a1e575 100644 --- a/collects/typed-racket/private/type-contract.rkt +++ b/collects/typed-racket/private/type-contract.rkt @@ -190,7 +190,7 @@ (append (map t->c/neg (drop last-dom (length first-dom))) (append-map conv opt-kws)))] [rng* (process-rngs (map t->c rngs))] - [(rst-spec ...) (if rst #'(#:rest (listof #,(t->c/neg rest))) #'())]) + [(rst-spec ...) (if rst #`(#:rest (listof #,(t->c/neg rst))) #'())]) #'((dom* ...) (opt-dom* ...) rst-spec ... . ->* . rng*))])] [else (define ((f [case-> #f]) a)