Clean up stxparam interface
This commit is contained in:
parent
9498bdd80f
commit
3cb100ba17
|
@ -20,18 +20,7 @@
|
||||||
"not an identifier"
|
"not an identifier"
|
||||||
stx
|
stx
|
||||||
id))
|
id))
|
||||||
(let*-values
|
(let ([sp (syntax-parameter-local-value id)])
|
||||||
;; If it is a rename-transformer-parameter, then
|
|
||||||
;; we need to get the parameter and not what it
|
|
||||||
;; points to, otherwise, we can keep going.
|
|
||||||
([(rt* rt-target)
|
|
||||||
(syntax-local-value/immediate id (lambda () #f))]
|
|
||||||
[(rt) (if (syntax-parameter? rt*)
|
|
||||||
rt*
|
|
||||||
(or rt-target rt*))]
|
|
||||||
[(sp) (if (set!-transformer? rt)
|
|
||||||
(set!-transformer-procedure rt)
|
|
||||||
rt)])
|
|
||||||
(unless (syntax-parameter? sp)
|
(unless (syntax-parameter? sp)
|
||||||
(raise-syntax-error
|
(raise-syntax-error
|
||||||
#f
|
#f
|
||||||
|
|
|
@ -36,6 +36,21 @@
|
||||||
(define (syntax-parameter-target sp)
|
(define (syntax-parameter-target sp)
|
||||||
(syntax-parameter-ref sp 1))
|
(syntax-parameter-ref sp 1))
|
||||||
|
|
||||||
|
;; If it is a rename-transformer-parameter, then we need to get the
|
||||||
|
;; parameter and not what it points to, otherwise, we can keep
|
||||||
|
;; going.
|
||||||
|
(define (syntax-parameter-local-value id)
|
||||||
|
(let*-values
|
||||||
|
([(rt* rt-target)
|
||||||
|
(syntax-local-value/immediate id (lambda () #f))]
|
||||||
|
[(rt) (if (syntax-parameter? rt*)
|
||||||
|
rt*
|
||||||
|
(or rt-target rt*))]
|
||||||
|
[(sp) (if (set!-transformer? rt)
|
||||||
|
(set!-transformer-procedure rt)
|
||||||
|
rt)])
|
||||||
|
sp))
|
||||||
|
|
||||||
(define (target-value target)
|
(define (target-value target)
|
||||||
(syntax-local-value (syntax-local-get-shadower target #t)
|
(syntax-local-value (syntax-local-get-shadower target #t)
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
@ -115,6 +130,7 @@
|
||||||
make-syntax-parameter
|
make-syntax-parameter
|
||||||
rename-transformer-parameter?
|
rename-transformer-parameter?
|
||||||
make-rename-transformer-parameter
|
make-rename-transformer-parameter
|
||||||
|
syntax-parameter-local-value
|
||||||
syntax-parameter-target
|
syntax-parameter-target
|
||||||
syntax-parameter-target-value
|
syntax-parameter-target-value
|
||||||
syntax-parameter-target-parameter))
|
syntax-parameter-target-parameter))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user