From 4b35df2c963b5d4b7291b2e75890b7983a12e0d9 Mon Sep 17 00:00:00 2001 From: Daniel Feltey Date: Thu, 27 Apr 2017 11:48:40 -0500 Subject: [PATCH] Be less rigid about the shape of type annotations in units Closes #535 --- .../typed-racket/base-env/unit-prims.rkt | 4 ++-- .../succeed/unit-non-prefix-annotation.rkt | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 typed-racket-test/succeed/unit-non-prefix-annotation.rkt diff --git a/typed-racket-lib/typed-racket/base-env/unit-prims.rkt b/typed-racket-lib/typed-racket/base-env/unit-prims.rkt index 4744e6d9..89a70c3d 100644 --- a/typed-racket-lib/typed-racket/base-env/unit-prims.rkt +++ b/typed-racket-lib/typed-racket/base-env/unit-prims.rkt @@ -327,13 +327,13 @@ ;; The inserted lambda expression will be expanded to the internal ;; name of the variable being annotated, this internal name ;; can then be associated with the type annotation during typechecking - [(define-values () (colon-helper (: name:id type) rest ...)) + [(define-values () (colon-helper (: name:id type ...) rest ...)) (quasisyntax/loc stx (define-values () #,(tr:unit:body-exp-def-type-property #`(#%expression (begin (void (lambda () name)) - (colon-helper (: name type) rest ...))) + (colon-helper (: name type ...) rest ...))) 'def/type)))] [(define-values (name:id ...) rhs) (quasisyntax/loc stx diff --git a/typed-racket-test/succeed/unit-non-prefix-annotation.rkt b/typed-racket-test/succeed/unit-non-prefix-annotation.rkt new file mode 100644 index 00000000..5d6c689d --- /dev/null +++ b/typed-racket-test/succeed/unit-non-prefix-annotation.rkt @@ -0,0 +1,13 @@ +#lang typed/racket/base + +(require typed/racket/unit) + +(define-signature sig^ + ([f : (Integer → Integer)])) + +(define-unit sig@ + (import) + (export sig^) + + (: f : Integer → Integer) + (define (f x) (+ 1 x))) \ No newline at end of file