From b1b70f03fdfba4c261ebf632e584525fcbe01bbd Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Wed, 14 May 2014 22:39:20 -0700 Subject: [PATCH] Correctly use a pattern variable in tc-app-apply. Closes PR 14508. original commit: 7da7eacbda9110ab7e0bc1a7b0fa294dc0f60da2 --- .../typed-racket/typecheck/tc-app/tc-app-apply.rkt | 4 ++-- .../typed-racket-test/tests/typed-racket/fail/pr14508.rkt | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14508.rkt diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-apply.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-apply.rkt index e5f9f0b6..bfd3ace3 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-apply.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-apply.rkt @@ -22,11 +22,11 @@ (define-tc/app-syntax-class (tc/app-apply expected) #:literal-sets (apply-literals) - (pattern ((~or apply k:apply) values e) + (pattern ((~or apply k:apply) (~and f values) e) (match (single-value #'e) [(tc-result1: (ListDots: dty dbound)) (ret null null null dty dbound)] [(tc-result1: (List: ts)) (ret ts)] - [_ (tc/apply #'values #'(e))])) + [_ (tc/apply #'f #'(e))])) (pattern ((~or apply k:apply) f . args) (tc/apply #'f #'args))) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14508.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14508.rkt new file mode 100644 index 00000000..13e5dd1d --- /dev/null +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14508.rkt @@ -0,0 +1,7 @@ +#; +(exn-pred 1) +#lang typed/racket + +(: f (All (a ...) (-> a ... a (values a ... a)))) +(define (f . xs) + (apply values 3))