diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/check-class-unit.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/check-class-unit.rkt index dd732875..fab63ad4 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/check-class-unit.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/check-class-unit.rkt @@ -1361,7 +1361,7 @@ (syntax-parse stx #:literals (let-values #%plain-lambda case-lambda) [(let-values ([(meth-name:id) - (#%plain-lambda (self-param:id id:id ...) + (#%plain-lambda (self-param:id . params) body ...)]) m) (define annotated-self-param @@ -1370,12 +1370,12 @@ ;; attach source location to the lambda in order to ;; obtain better error messages for arity errors #,(quasisyntax/loc stx - (#%plain-lambda (#,annotated-self-param id ...) + (#%plain-lambda (#,annotated-self-param . params) body ...))]) m)] [(let-values ([(meth-name:id) (let-values (((core:id) - (#%plain-lambda (param:id ...) + (#%plain-lambda params core-body ...))) method-body ...)]) m) @@ -1384,7 +1384,7 @@ #`(let-values (((core) ;; see comment above #,(quasisyntax/loc stx - (#%plain-lambda (param ...) + (#%plain-lambda params core-body ...)))) method-body ...) #t)]) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/class-tests.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/class-tests.rkt index c3d2e011..68e34b47 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/class-tests.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/class-tests.rkt @@ -1271,4 +1271,11 @@ (public m) (define m (case-lambda [(x) "bad"]))) #:msg #rx"expected: Integer.*given: String"] + ;; test that rest args work + [tc-e (let () + (class object% (super-new) + (: m (-> Integer * Integer)) + (define/public (m . xs) (apply + xs))) + (void)) + -Void] ))