Skip to content

Commit c3d7b23

Browse files
committed
Ensure no-change-test programs compile
1 parent c970144 commit c3d7b23

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

default-recommendations/match-shortcuts-test.rkt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -440,10 +440,10 @@ no-change-test: "list element variable definitions not refactorable when referen
440440

441441
no-change-test: "list element variable definitions not refactorable when referencing list expressions"
442442
------------------------------
443-
(define (f pt-list)
444-
(define x (list-ref (first pt-list) 0))
445-
(define y (list-ref (first pt-list) 1))
446-
(define z (list-ref (first pt-list) 2))
443+
(define (f pt-func)
444+
(define x (list-ref (pt-func) 0))
445+
(define y (list-ref (pt-func) 1))
446+
(define z (list-ref (pt-func) 2))
447447
(+ x y z))
448448
------------------------------
449449

private/source.rkt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
[source-original (-> source? unmodified-source?)]
1616
[source-read-syntax (-> source? syntax?)]
1717
[source-read-language (-> source? (or/c module-path? #false))]
18+
[source-expand (-> source? syntax?)]
1819
[source-text-of (-> source? syntax? immutable-string?)]
1920
[file-source? (-> any/c boolean?)]
2021
[file-source (-> path-string? file-source?)]
@@ -127,6 +128,10 @@
127128
(check-equal? (source-read-language (string-source "(void)")) #false)))
128129

129130

131+
(define (source-expand code)
132+
(expand (source-read-syntax code)))
133+
134+
130135
(define/guard (source-path code)
131136
(guard-match (or (file-source path) (modified-source (file-source path) _)) code #:else #false)
132137
path)

test/private/rackunit.rkt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
rackunit
2323
rebellion/base/comparator
2424
rebellion/base/range
25+
rebellion/base/result
2526
rebellion/collection/entry
2627
rebellion/collection/hash
2728
rebellion/collection/list
@@ -206,8 +207,8 @@
206207
(define-check (check-suite-does-not-refactor original-program)
207208
(define suite (current-suite-under-test))
208209
(set! original-program (code-block-append (current-header) original-program))
210+
(fail-unless-program-compiles original-program)
209211
(define-values (call-with-logs-captured build-logs-info) (make-log-capture-utilities))
210-
211212
(define result-set
212213
(call-with-logs-captured
213214
(λ ()
@@ -227,6 +228,19 @@
227228
(fail-check "the program was not changed, but no-op fixes were suggested"))))))
228229

229230

231+
(define (fail-unless-program-compiles program)
232+
(define src (string-source (code-block-raw-string program)))
233+
(define expansion-result
234+
(parameterize ([current-namespace (make-base-namespace)])
235+
(result (source-expand src))))
236+
(match expansion-result
237+
[(? success?) (void)]
238+
[(failure e)
239+
(with-check-info (['actual (string-block-info (code-block-raw-string program))]
240+
['exception e])
241+
(fail-check "the program raised an error when compiled and couldn't be analyzed"))]))
242+
243+
230244
(define-check (check-suite-analysis program context-list target property-key expected-value)
231245
(define suite (current-suite-under-test))
232246
(set! program (code-block-append (current-header) program))

0 commit comments

Comments
 (0)