Skip to content

Commit 4b9ed55

Browse files
Copilotjackfirth
andcommitted
Address PR feedback: move to analyzers/private, fix struct, remove bound-by-phase
Co-authored-by: jackfirth <[email protected]>
1 parent 56b95a0 commit 4b9ed55

File tree

3 files changed

+19
-17
lines changed

3 files changed

+19
-17
lines changed

default-recommendations/analyzers/identifier-usage.rkt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
[identifier-usage-analyzer expansion-analyzer?]))
1010

1111

12-
(require racket/hash
13-
racket/list
12+
(require racket/list
1413
racket/stream
1514
rebellion/collection/entry
1615
rebellion/streaming/transducer
16+
resyntax/default-recommendations/analyzers/private/expanded-id-table
1717
resyntax/private/analyzer
18-
resyntax/private/expanded-id-table
1918
resyntax/private/syntax-path
2019
resyntax/private/syntax-property-bundle
2120
resyntax/private/syntax-traversal
@@ -160,24 +159,19 @@
160159
;; Create expanded-id-table to track bound identifiers with empty usage lists
161160
(define table (make-expanded-id-table))
162161

163-
;; Group bound identifiers by phase for efficient lookup
164-
(define bound-by-phase (make-hash))
165-
166162
;; Initialize all bound identifiers with empty usage lists
167163
(for ([id (in-stream (binding-site-identifiers labeled-stx))])
168164
(define id-phase (syntax-property id 'phase))
169-
(define expanded-id (expanded-identifier id id-phase))
170-
(expanded-id-table-set! table expanded-id '())
171-
(hash-update! bound-by-phase id-phase (λ (lst) (cons expanded-id lst)) '()))
165+
(expanded-id-table-set! table (expanded-identifier id id-phase) '()))
172166

173167
;; For each usage, find its binding within the same phase and add it to the usage list
174168
(for ([used-id (in-stream (usage-site-identifiers labeled-stx))])
175169
(define used-phase (syntax-property used-id 'phase))
176-
(define bound-at-phase (hash-ref bound-by-phase used-phase '()))
177-
(for ([bound-expanded-id bound-at-phase])
170+
(for ([bound-entry (in-expanded-id-table-phase table used-phase)])
171+
(define bound-expanded-id (entry-key bound-entry))
178172
(define bound-id (expanded-identifier-syntax bound-expanded-id))
179173
(when (free-identifier=? bound-id used-id)
180-
(define current-usages (expanded-id-table-ref table bound-expanded-id '()))
174+
(define current-usages (entry-value bound-entry))
181175
(expanded-id-table-set! table bound-expanded-id (cons used-id current-usages)))))
182176

183177
table)

private/expanded-id-table.rkt renamed to default-recommendations/analyzers/private/expanded-id-table.rkt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
(->* (expanded-id-table? expanded-identifier?) (failure-result/c) any/c)]
1414
[expanded-id-table-set! (-> expanded-id-table? expanded-identifier? any/c void?)]
1515
[in-expanded-id-table
16-
(-> expanded-id-table? (sequence/c (entry/c expanded-identifier? any/c)))]))
16+
(-> expanded-id-table? (sequence/c (entry/c expanded-identifier? any/c)))]
17+
[in-expanded-id-table-phase
18+
(-> expanded-id-table? (or/c exact-nonnegative-integer? #false) (sequence/c (entry/c expanded-identifier? any/c)))]))
1719

1820

1921
(require guard
@@ -40,9 +42,7 @@
4042
#:guard (struct-guard/c identifier? (or/c exact-nonnegative-integer? #false)))
4143

4244

43-
(struct expanded-id-table (table)
44-
#:transparent
45-
#:mutable)
45+
(struct expanded-id-table (table))
4646

4747

4848
(define (make-expanded-id-table)
@@ -76,6 +76,14 @@
7676
(entry (expanded-identifier stx phase) value)))
7777

7878

79+
(define (in-expanded-id-table-phase table phase)
80+
(define phase-table (hash-ref (expanded-id-table-table table) phase #false))
81+
(if phase-table
82+
(for/stream ([(stx value) (in-free-id-table phase-table)])
83+
(entry (expanded-identifier stx phase) value))
84+
(stream)))
85+
86+
7987
;@----------------------------------------------------------------------------------------------------
8088

8189

default-recommendations/analyzers/variable-mutability.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
racket/stream
1515
rebellion/collection/entry
1616
rebellion/streaming/transducer
17+
resyntax/default-recommendations/analyzers/private/expanded-id-table
1718
resyntax/private/analyzer
18-
resyntax/private/expanded-id-table
1919
resyntax/private/syntax-path
2020
resyntax/private/syntax-property-bundle
2121
resyntax/private/syntax-traversal

0 commit comments

Comments
 (0)