diff --git a/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt b/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt index 5bc722e26..63096f484 100644 --- a/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt +++ b/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt @@ -137,7 +137,8 @@ (cond [(andmap type-annotation arg-list) (get-types arg-list #:default Univ)] - [(zero? extra-arg-count) arg-tys] + [(zero? extra-arg-count) + (map (lambda (a t) (get-type a #:default t)) arg-list arg-tys)] [(negative? extra-arg-count) (take arg-tys arg-len)] [else (define tail-tys (match rst diff --git a/typed-racket-test/fail/gh-issue-1011.rkt b/typed-racket-test/fail/gh-issue-1011.rkt new file mode 100644 index 000000000..2b2d501b4 --- /dev/null +++ b/typed-racket-test/fail/gh-issue-1011.rkt @@ -0,0 +1,8 @@ +#; +(exn-pred 1) +#lang typed/racket + +(struct root ([p : Integer] [q : Integer]) + #:property prop:custom-write + (λ ([me : Integer] [port : Output-Port] mode) : Void + (void))) diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index e95caa300..45d8ba0a3 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -840,6 +840,12 @@ [tc-e/t (let: ([x : (Un 'foo Number) 'foo]) (if (eq? 'foo x) 3 x)) -Number] + [tc-err (let () + (: f (-> String Integer Number)) + (tr:define (f [a : Number] b) + (string-length a)) + f) + #:ret (tc-ret (t:-> -String -Integer -Number))] [tc-err (let: ([x : (U String 'foo) 'foo]) (if (string=? x 'foo)