From dfa444cf5b9aa4bbfca2f0ba5e4b7f6cf2d07863 Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Thu, 5 Jun 2014 11:21:39 -0400 Subject: [PATCH] Don't lose syntax locations for TR define Closes PR 14544 original commit: ca8d8346b6d6f99338f1b325cf8f1b412ccefd87 --- .../typed-racket-lib/typed-racket/base-env/prims.rkt | 8 ++++---- .../typed-racket-test/tests/typed-racket/fail/pr14544.rkt | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14544.rkt diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt index 95ca66b1..cfcb57be 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt @@ -1222,11 +1222,11 @@ This file defines two sorts of primitives. All of them are provided into any mod (-define nm : arrty (-lambda formals body ...))))] [(define: nm:id ~! (~describe ":" :) (~describe "type" ty) body) - #'(-define nm : ty body)] + (syntax/loc stx (-define nm : ty body))] [(define: tvars:type-variables nm:id : ty body) - #'(-define #:forall tvars nm : ty body)] + (syntax/loc stx (-define #:forall tvars nm : ty body))] [(define: tvars:type-variables (nm:id . formals:annotated-formals) : ret-ty body ...) - #'(-define #:forall tvars (nm . formals) : ret-ty body ...)])) + (syntax/loc stx (-define #:forall tvars (nm . formals) : ret-ty body ...))])) (define-syntax (-define stx) (syntax-parse stx #:literals (:) @@ -1266,7 +1266,7 @@ This file defines two sorts of primitives. All of them are provided into any mod [(-lambda formals . others) (template (-lambda (?@ . vars) formals . others))] [_ rhs])) - #`(define #,defined-id #,rhs*)])) + (quasisyntax/loc stx (define #,defined-id #,rhs*))])) (define-syntax (with-asserts stx) (define-syntax-class with-asserts-clause diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14544.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14544.rkt new file mode 100644 index 00000000..566a0b23 --- /dev/null +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/pr14544.rkt @@ -0,0 +1,6 @@ +#; +(exn-pred (regexp-quote "in: (define (f x y z) (+ y z))")) +#lang typed/racket + +(: f (-> Number Number Number)) +(define (f x y z) (+ y z))