From db3c6bbbe0131f387b8b0740901519c6f0a027e1 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Tue, 26 Oct 2010 16:37:52 -0400 Subject: [PATCH] Avoid dumb parsing bugs in require/typed. original commit: 561fdc8db580c828a45dc27c4ca61b21dccad311 --- .../typed-scheme/succeed/require-typed-parse.rkt | 16 ++++++++++++++++ collects/typed-scheme/private/prims.rkt | 6 +++++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 collects/tests/typed-scheme/succeed/require-typed-parse.rkt diff --git a/collects/tests/typed-scheme/succeed/require-typed-parse.rkt b/collects/tests/typed-scheme/succeed/require-typed-parse.rkt new file mode 100644 index 00000000..faa11648 --- /dev/null +++ b/collects/tests/typed-scheme/succeed/require-typed-parse.rkt @@ -0,0 +1,16 @@ +#lang racket/load + +(module m1 racket + (define x (make-parameter 1)) + (define y 1) + (provide y) + (provide/contract [x (parameter/c number?)])) + +(module m2 typed/racket + (require/typed 'm1 + [y Number] + [x (Parameterof Number)]) + (x 1) + (x)) + +(require 'm2) diff --git a/collects/typed-scheme/private/prims.rkt b/collects/typed-scheme/private/prims.rkt index 2f0a636b..46475ac2 100644 --- a/collects/typed-scheme/private/prims.rkt +++ b/collects/typed-scheme/private/prims.rkt @@ -84,9 +84,13 @@ This file defines two sorts of primitives. All of them are provided into any mod (raise-syntax-error #f "at least one specification is required" stx)) #'(begin (require/opaque-type oc.ty oc.pred lib . oc.opt) ... - (require/typed sc.nm sc.ty lib) ... + (require/typed #:internal sc.nm sc.ty lib) ... (require-typed-struct strc.nm (strc.body ...) lib) ...)] [(_ nm:opt-rename ty lib (~optional [~seq #:struct-maker parent]) ...) + #`(require/typed #:internal nm ty lib #,@(if (attribute parent) + #'(#:struct-maker parent) + #'()))] + [(_ #:internal nm:opt-rename ty lib (~optional [~seq #:struct-maker parent]) ...) (with-syntax ([cnt* (generate-temporary #'nm.nm)] [sm (if (attribute parent) #'(#:struct-maker parent)