From eb349682c35ad1d4f1975b08d602bfbd190f65b1 Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Wed, 1 Apr 2009 03:14:34 +0000 Subject: [PATCH] scheme/signature: fixed to recognize scheme require forms svn: r14396 --- collects/mzlib/private/unit-compiletime.ss | 21 +++++++++++++-------- collects/scheme/signature/lang.ss | 6 +++++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/collects/mzlib/private/unit-compiletime.ss b/collects/mzlib/private/unit-compiletime.ss index b8eede078a..fb16866332 100644 --- a/collects/mzlib/private/unit-compiletime.ss +++ b/collects/mzlib/private/unit-compiletime.ss @@ -21,15 +21,16 @@ set!-trans-extract process-tagged-import process-tagged-export lookup-signature lookup-def-unit make-id-mapper make-id-mappers sig-names sig-int-names sig-ext-names - map-sig split-requires apply-mac complete-exports complete-imports check-duplicate-subs + map-sig split-requires split-requires* apply-mac complete-exports complete-imports check-duplicate-subs process-spec) (define-syntax (apply-mac stx) (syntax-case stx () ((_ f x) ((syntax-e #'f) #'x)))) - ;; split-requires : (listof syntax-object) -> (values (listof syntax-object) (listof syntax-object)) - (define (split-requires l) + ;; split-requires* : (listof identifier) -> (listof syntax) -> (values (listof syntax) (listof syntax)) + ;; Parameterized over identifiers for require forms. + (define ((split-requires* req-forms) l) (let loop ((l l) (requires null)) (cond @@ -37,14 +38,18 @@ (else (syntax-case (car l) () ((r . x) - (or (module-identifier=? #'r #'require) - (module-identifier=? #'r #'require-for-syntax) - (module-identifier=? #'r #'require-for-template)) + (ormap (lambda (req) (module-identifier=? #'r req)) + req-forms) (loop (cdr l) (cons (car l) requires))) (_ (cons (reverse requires) l))))))) - - + + ;; split-requires : (listof syntax) -> (values (listof syntax) (listof syntax)) + ;; Recognizes mzscheme require forms. + (define split-requires + (split-requires* + (list #'require #'require-for-syntax #'require-for-template))) + ;; (make-var-info bool bool identifier (U #f syntax-object)) (define-struct var-info (syntax? [exported? #:mutable] id [ctc #:mutable])) diff --git a/collects/scheme/signature/lang.ss b/collects/scheme/signature/lang.ss index 9017e518d2..8635cae591 100644 --- a/collects/scheme/signature/lang.ss +++ b/collects/scheme/signature/lang.ss @@ -15,13 +15,17 @@ (string-append (regexp-replace "-sig$" (symbol->string s) "") "^"))) +;; Recognizes scheme require forms. +(define-for-syntax split-scheme-requires + (split-requires* (list #'require #'#%require))) + (define-syntax (module-begin stx) (parameterize ((error-syntax stx)) (with-syntax ((name (make-name (syntax-property stx 'enclosing-module-name)))) (syntax-case stx () ((_ . x) (with-syntax ((((reqs ...) . (body ...)) - (split-requires (checked-syntax->list #'x)))) + (split-scheme-requires (checked-syntax->list #'x)))) (datum->syntax stx (syntax-e #'(#%module-begin