Skip to content

Commit b544d84

Browse files
authored
Add more misbound suggestion logging (#494)
1 parent 9cbe058 commit b544d84

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

main.rkt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,12 +281,23 @@
281281
(refactoring-rule-refactor rule syntax (source-code-analysis-code analysis)))
282282
#:else absent)
283283
(guard (syntax-replacement-introduces-incorrect-bindings? replacement) #:else
284+
(define bad-ids (syntax-replacement-introduced-incorrect-identifiers replacement))
285+
(define orig-stx (syntax-replacement-original-syntax replacement))
286+
(define intro (syntax-replacement-introduction-scope replacement))
284287
(log-resyntax-warning
285288
(string-append
286289
"~a: suggestion discarded because it introduces identifiers with incorrect bindings\n"
287-
" incorrect identifiers: ~a")
290+
" incorrect identifiers: ~a\n"
291+
" bindings in original context: ~a\n"
292+
" bindings in syntax replacement: ~a\n"
293+
" replaced syntax: ~a")
288294
(object-name rule)
289-
(syntax-replacement-introduced-incorrect-identifiers replacement))
295+
bad-ids
296+
(for/list ([id (in-list bad-ids)])
297+
(identifier-binding (datum->syntax orig-stx (syntax->datum id))))
298+
(for/list ([id (in-list bad-ids)])
299+
(identifier-binding (intro id 'remove)))
300+
orig-stx)
290301
absent)
291302
(guard (syntax-replacement-preserves-comments? replacement comments) #:else
292303
(log-resyntax-warning

private/syntax-replacement.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
[syntax-replacement-original-syntax (-> syntax-replacement? (and/c syntax? syntax-original?))]
1818
[syntax-replacement-new-syntax (-> syntax-replacement? syntax?)]
1919
[syntax-replacement-source (-> syntax-replacement? source?)]
20+
[syntax-replacement-introduction-scope
21+
(-> syntax-replacement? (->* (syntax?) ((or/c 'flip 'add 'remove)) syntax?))]
2022
[syntax-replacement-introduces-incorrect-bindings? (-> syntax-replacement? boolean?)]
2123
[syntax-replacement-introduced-incorrect-identifiers
2224
(-> syntax-replacement? (listof identifier?))]

0 commit comments

Comments
 (0)