diff --git a/collects/scheme/package.ss b/collects/scheme/package.ss index 7cb872030d..8f6e0e3cac 100644 --- a/collects/scheme/package.ss +++ b/collects/scheme/package.ss @@ -34,10 +34,24 @@ (with-syntax ([define-values define-values-id]) (syntax/loc stx (define-values (id ...) rhs))))])) -(define-syntax (define*-values stx) +(define-syntax (-define*-values stx) (do-define-* stx #'define-values)) -(define-syntax (define*-syntaxes stx) +(define-syntax (-define*-syntaxes stx) (do-define-* stx #'define-syntaxes)) +(define-syntax (define*-values stx) + (syntax-case stx () + [(_ (id ...) rhs) + (syntax-property + (syntax/loc stx (-define*-values (id ...) rhs)) + 'certify-mode + 'transparent-binding)])) +(define-syntax (define*-syntaxes stx) + (syntax-case stx () + [(_ (id ...) rhs) + (syntax-property + (syntax/loc stx (-define*-syntaxes (id ...) rhs)) + 'certify-mode + 'transparent-binding)])) (define-syntax (define* stx) (let-values ([(id rhs) (normalize-definition stx #'lambda)]) @@ -125,8 +139,8 @@ id def-ctxes))] [kernel-forms (list* - #'define*-values - #'define*-syntaxes + #'-define*-values + #'-define*-syntaxes (kernel-form-identifier-list))] [init-exprs (syntax->list #'(form ...))] [new-bindings (make-bound-identifier-mapping)] @@ -282,13 +296,13 @@ def-ctxes)] [(def (id ...) rhs) (and (or (free-identifier=? #'def #'define-syntaxes) - (free-identifier=? #'def #'define*-syntaxes)) + (free-identifier=? #'def #'-define*-syntaxes)) (andmap identifier? (syntax->list #'(id ...)))) (with-syntax ([rhs (local-transformer-expand #'rhs 'expression null)]) - (let ([star? (free-identifier=? #'def #'define*-syntaxes)] + (let ([star? (free-identifier=? #'def #'-define*-syntaxes)] [ids (syntax->list #'(id ...))]) (let* ([def-ctx (if star? (syntax-local-make-definition-context (car def-ctxes)) @@ -305,9 +319,9 @@ (if star? (cons def-ctx def-ctxes) def-ctxes)))))] [(def (id ...) rhs) (and (or (free-identifier=? #'def #'define-values) - (free-identifier=? #'def #'define*-values)) + (free-identifier=? #'def #'-define*-values)) (andmap identifier? (syntax->list #'(id ...)))) - (let ([star? (free-identifier=? #'def #'define*-values)] + (let ([star? (free-identifier=? #'def #'-define*-values)] [ids (syntax->list #'(id ...))]) (let* ([def-ctx (if star? (syntax-local-make-definition-context) @@ -394,9 +408,7 @@ (define-syntax (open-package stx) (do-open stx #'define-syntaxes)) (define-syntax (open*-package stx) - (syntax-property (do-open stx #'define*-syntaxes) - 'certify-mode - 'transparent-binding)) + (do-open stx #'define*-syntaxes)) (define-for-syntax (package-exported-identifiers id) (let ([v (and (identifier? id)