Fixed define-pvars (was not defining the unique-at-runtime variables)
This commit is contained in:
parent
81a05e6ff3
commit
0029c1acbf
|
@ -88,7 +88,7 @@
|
|||
(λ (lower upper)
|
||||
(if (= (- upper lower) 1)
|
||||
(if (try-nth-current-pvars upper)
|
||||
upper
|
||||
upper ;; Technically not possible, still included for safety.
|
||||
lower)
|
||||
(let ([mid (/ (+ upper lower) 2)])
|
||||
(if (try-nth-current-pvars mid)
|
||||
|
@ -186,6 +186,9 @@
|
|||
(nth-current-pvars-id (+ old-pvars-index 1)))])
|
||||
(datum->syntax
|
||||
(quote-syntax here)
|
||||
`(define-syntaxes (,binding)
|
||||
(list* ,@stxquoted-pvars+unique
|
||||
(try-nth-current-pvars ,old-pvars-index))))))))
|
||||
`(begin
|
||||
(define-values (,@unique-at-runtime)
|
||||
(values ,@(map (λ (pvar) `(gensym (quote ,pvar))) pvars)))
|
||||
(define-syntaxes (,binding)
|
||||
(list* ,@stxquoted-pvars+unique
|
||||
(try-nth-current-pvars ,old-pvars-index)))))))))
|
|
@ -26,10 +26,10 @@ and the @racket[syntax-case] family. These patched versions track which syntax
|
|||
pattern variables are bound. This allows some libraries to change the way
|
||||
syntax pattern variables work.
|
||||
|
||||
For example, @racketmodname[subtemplate] automatically derives temporary
|
||||
For example, @tt{subtemplate} automatically derives temporary
|
||||
identifiers when a template contains @racket[yᵢ …], and @racket[xᵢ] is a
|
||||
pattern variable. To know from which @racket[varᵢ] the @racket[yᵢ …]
|
||||
identifiers must be derived, @racketmodname[subtemplate] needs to know which
|
||||
identifiers must be derived, @tt{subtemplate} needs to know which
|
||||
syntax pattern variables are within scope.
|
||||
|
||||
@section{Tracking currently-bound pattern variables with @racket[syntax-parse]}
|
||||
|
@ -86,7 +86,7 @@ track which syntax or datum pattern variables are bound.
|
|||
|
||||
This can be used to associate run-time data with each syntax pattern
|
||||
variable, via a weak hash table created with @racket[make-weak-hasheq]. For
|
||||
example, the @racketmodname[subtemplate] library implicitly derives
|
||||
example, the @tt{subtemplate} library implicitly derives
|
||||
identifiers (similarly to @racket[generate-temporaries]) for uses of
|
||||
@racket[yᵢ ...] from a @racket[xᵢ] pattern variable bearing the same
|
||||
subscript. The generated identifiers are associated with @racket[xᵢ] via this
|
||||
|
|
Loading…
Reference in New Issue
Block a user