adjust define*-{values,syntaxes} to avoid certificate problems

svn: r14024

original commit: 13b2bc336337077d603050eab67ae4343beb54cc
This commit is contained in:
Matthew Flatt 2009-03-09 17:19:21 +00:00
parent 0a32e8dd83
commit f5e49e3128

View File

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