From 237aeb761cb38b88f121f3703d9a97eb3f8b7231 Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Tue, 25 Mar 2014 01:16:38 -0700 Subject: [PATCH] Make TR use rest annotations over expected type. Closes PR 10936. original commit: c67f5f753cadf2b5a4f595b4e4c14264382aea16 --- .../typed-racket/typecheck/tc-lambda-unit.rkt | 2 +- .../tests/typed-racket/fail/pr10936.rkt | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr10936.rkt diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt index 94bc4592..5ef586df 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-lambda-unit.rkt @@ -120,8 +120,8 @@ [else (define base-rest-type (cond - [rest-ty rest-ty] [(type-annotation rest) (get-type rest #:default Univ)] + [rest-ty rest-ty] [else Univ])) (define extra-types (if (<= arg-len tys-len) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr10936.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr10936.rkt new file mode 100644 index 00000000..855aa11d --- /dev/null +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr10936.rkt @@ -0,0 +1,9 @@ +#; +(exn-pred 2) +#lang typed/racket +(define: my-rest : (All (elem) (elem elem * -> (Listof elem))) + (lambda ( #{ arg : elem} . #{ tail : (Listof elem) }) + (rest tail))) +(define: my-rest2 : (All (elem) (elem elem * -> (Listof elem))) + (lambda ( #{ arg : elem} . #{ tail : elem }) + (rest tail)))