From 6c3031a5f7f38f441296b248801cfce320f2e62b Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Tue, 26 Mar 2019 15:51:32 +0100 Subject: [PATCH] add optional intro? argument to record-disappeared-uses --- .../scribblings/reference/syntax-util.scrbl | 14 +++++++++----- racket/collects/racket/syntax.rkt | 6 +++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pkgs/racket-doc/scribblings/reference/syntax-util.scrbl b/pkgs/racket-doc/scribblings/reference/syntax-util.scrbl index 66c0e62801..8b3f055eff 100644 --- a/pkgs/racket-doc/scribblings/reference/syntax-util.scrbl +++ b/pkgs/racket-doc/scribblings/reference/syntax-util.scrbl @@ -164,19 +164,23 @@ does not satisfy the predicate, @racket[#f] is returned and the identifier is not recorded as a disappeared use. } -@defproc[(record-disappeared-uses [id (or/c identifier? (listof identifier?))]) +@defproc[(record-disappeared-uses [id (or/c identifier? (listof identifier?))] + [intro? boolean? (syntax-transforming?)]) void?]{ -Add @racket[id] to @racket[(current-recorded-disappeared-uses)] after calling -@racket[syntax-local-introduce] on the identifier. If @racket[id] is a list, -perform the same operation on all the identifiers. +Add @racket[id] to @racket[(current-recorded-disappeared-uses)]. If +@racket[id] is a list, perform the same operation on all the +identifiers. If @racket[intro?] is true, then +@racket[syntax-local-introduce] is first called on the identifiers. If not used within the extent of a @racket[with-disappeared-uses] form or similar, has no effect. @history[#:changed "6.5.0.7" @elem{Added the option to pass a single identifier instead of - requiring a list.}] + requiring a list.} + #:changed "7.2.0.11" + @elem{Added the @racket[intro?] argument.}] } diff --git a/racket/collects/racket/syntax.rkt b/racket/collects/racket/syntax.rkt index 39e2c877bd..ce0a72d1fc 100644 --- a/racket/collects/racket/syntax.rkt +++ b/racket/collects/racket/syntax.rkt @@ -87,15 +87,15 @@ (begin (record-disappeared-uses (list id)) value)))) -(define (record-disappeared-uses ids) +(define (record-disappeared-uses ids [intro? (syntax-transforming?)]) (cond - [(identifier? ids) (record-disappeared-uses (list ids))] + [(identifier? ids) (record-disappeared-uses (list ids) intro?)] [(and (list? ids) (andmap identifier? ids)) (let ([uses (current-recorded-disappeared-uses)]) (when uses (current-recorded-disappeared-uses (append - (if (syntax-transforming?) + (if intro? (map syntax-local-introduce ids) ids) uses))))]