adjust define*-{values,syntaxes} to avoid certificate problems
svn: r14024 original commit: 13b2bc336337077d603050eab67ae4343beb54cc
This commit is contained in:
parent
0a32e8dd83
commit
f5e49e3128
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user