Skip to content

Commit 697eade

Browse files
Copilotjackfirth
andauthored
Pass analyzers as required parameter to source-analyze (#687)
Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: jackfirth <[email protected]>
1 parent 5176599 commit 697eade

File tree

2 files changed

+48
-11
lines changed

2 files changed

+48
-11
lines changed

main.rkt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@
5252
rebellion/type/record
5353
resyntax/base
5454
resyntax/default-recommendations
55+
resyntax/default-recommendations/analyzers/identifier-usage
56+
resyntax/default-recommendations/analyzers/ignored-result-values
57+
resyntax/default-recommendations/analyzers/variable-mutability
5558
resyntax/private/analysis
5659
resyntax/private/comment-reader
5760
resyntax/private/git
@@ -206,7 +209,11 @@
206209

207210
(define results
208211
(with-handlers ([exn:fail? skip])
209-
(define analysis (source-analyze source #:lines lines))
212+
(define analysis (source-analyze source
213+
#:lines lines
214+
#:analyzers (list identifier-usage-analyzer
215+
ignored-result-values-analyzer
216+
variable-mutability-analyzer)))
210217
(refactor-visited-forms
211218
#:analysis analysis #:suite effective-suite #:comments comments #:lines lines)))
212219

@@ -234,7 +241,10 @@
234241
(with-handlers ([exn:fail:syntax? skip]
235242
[exn:fail:filesystem:missing-module? skip]
236243
[exn:fail:contract:variable? skip])
237-
(define analysis (source-analyze source))
244+
(define analysis (source-analyze source
245+
#:analyzers (list identifier-usage-analyzer
246+
ignored-result-values-analyzer
247+
variable-mutability-analyzer)))
238248
(source-code-analysis-added-syntax-properties analysis)))
239249

240250

private/analysis.rkt

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
(provide
88
(contract-out
9-
[source-analyze (->* (source?) (#:lines range-set?) source-code-analysis?)]
9+
[source-analyze (->* (source? #:analyzers (listof expansion-analyzer?))
10+
(#:lines range-set?)
11+
source-code-analysis?)]
1012
[source-code-analysis? (-> any/c boolean?)]
1113
[source-code-analysis-code (-> source-code-analysis? source?)]
1214
[source-code-analysis-visited-forms (-> source-code-analysis? (listof syntax?))]
@@ -56,7 +58,9 @@
5658
(code visited-forms expansion-time-output namespace added-syntax-properties))
5759

5860

59-
(define (source-analyze code #:lines [lines (range-set (unbounded-range #:comparator natural<=>))])
61+
(define (source-analyze code
62+
#:lines [lines (range-set (unbounded-range #:comparator natural<=>))]
63+
#:analyzers analyzers)
6064
(define ns (make-base-namespace))
6165
(parameterize ([current-directory (or (source-directory code) (current-directory))]
6266
[current-namespace ns])
@@ -136,13 +140,11 @@
136140
#:into (into-sorted-map syntax-path<=>)))
137141

138142
(define expansion-analyzer-props
139-
(transduce (sequence-append
140-
(syntax-property-bundle-entries
141-
(expansion-analyze identifier-usage-analyzer expanded))
142-
(syntax-property-bundle-entries
143-
(expansion-analyze ignored-result-values-analyzer expanded))
144-
(syntax-property-bundle-entries
145-
(expansion-analyze variable-mutability-analyzer expanded)))
143+
(transduce analyzers
144+
(append-mapping
145+
(λ (analyzer)
146+
(syntax-property-bundle-entries
147+
(expansion-analyze analyzer expanded))))
146148
#:into into-syntax-property-bundle))
147149

148150
(define expansion-analyzer-props-adjusted-for-visits
@@ -234,3 +236,28 @@
234236
(define (extract-module-require-spec mod-stx)
235237
(syntax-parse mod-stx
236238
[(_ name _ . _) `',(syntax-e #'name)]))
239+
240+
241+
(module+ test
242+
(require rackunit)
243+
244+
(test-case "source-analyze with custom analyzers list"
245+
;; Test that source-analyze accepts an analyzers parameter
246+
(define test-source (string-source "#lang racket/base (define x 1)"))
247+
248+
;; Test with empty analyzers list
249+
(define analysis-empty (source-analyze test-source #:analyzers '()))
250+
(check-true (source-code-analysis? analysis-empty))
251+
252+
;; Test with single analyzer
253+
(define analysis-single
254+
(source-analyze test-source #:analyzers (list identifier-usage-analyzer)))
255+
(check-true (source-code-analysis? analysis-single))
256+
257+
;; Test with default analyzers (should match default behavior)
258+
(define analysis-default
259+
(source-analyze test-source
260+
#:analyzers (list identifier-usage-analyzer
261+
ignored-result-values-analyzer
262+
variable-mutability-analyzer)))
263+
(check-true (source-code-analysis? analysis-default))))

0 commit comments

Comments
 (0)