Skip to content

Commit eff3124

Browse files
authored
Don't reformat entire context when removing define-values (#362)
Saw this in racket/typed-racket#1402.
1 parent f5d1ede commit eff3124

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

default-recommendations/definition-shortcuts-test.rkt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,29 @@ test: "define-values with values inside cond refactorable to separate definition
6161
------------------------------
6262

6363

64+
test: "refactoring define-values to separate definitions doesn't reformat context"
65+
------------------------------
66+
(define (foo)
67+
68+
( displayln "foo" )
69+
70+
(define-values (a b c) (values 1 2 3))
71+
72+
( + a b c ))
73+
------------------------------
74+
------------------------------
75+
(define (foo)
76+
77+
( displayln "foo" )
78+
79+
(define a 1)
80+
(define b 2)
81+
(define c 3)
82+
83+
( + a b c ))
84+
------------------------------
85+
86+
6487
test: "immediately returned variable definition can be inlined"
6588
------------------------------
6689
(define (foo)

default-recommendations/definition-shortcuts.rkt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
#:description "This use of `define-values` is unnecessary."
2424
#:literals (define-values values)
2525
(~seq body-before ...
26-
(define-values (id:id ...) (values expr:expr ...))
26+
(~and definition (define-values (id:id ...) (values expr:expr ...)))
2727
body-after ...)
28-
(body-before ... (define id expr) ... body-after ...))
28+
#:with (replacement ...)
29+
#'(~focus-replacement-on (~splicing-replacement ((define id expr) ...) #:original definition))
30+
(body-before ... replacement ... body-after ...))
2931

3032

3133
(define-definition-context-refactoring-rule inline-unnecessary-define

0 commit comments

Comments
 (0)