Clean up stxparam interface

This commit is contained in:
Jay McCarthy 2016-01-14 17:15:22 -05:00
parent 9498bdd80f
commit 3cb100ba17
2 changed files with 17 additions and 12 deletions

View File

@ -20,18 +20,7 @@
"not an identifier"
stx
id))
(let*-values
;; 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)])
(let ([sp (syntax-parameter-local-value id)])
(unless (syntax-parameter? sp)
(raise-syntax-error
#f

View File

@ -36,6 +36,21 @@
(define (syntax-parameter-target sp)
(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)
(syntax-local-value (syntax-local-get-shadower target #t)
(lambda ()
@ -115,6 +130,7 @@
make-syntax-parameter
rename-transformer-parameter?
make-rename-transformer-parameter
syntax-parameter-local-value
syntax-parameter-target
syntax-parameter-target-value
syntax-parameter-target-parameter))