Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions default-recommendations/let-binding-suggestions-test.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -684,3 +684,37 @@ test: "redundant let bindings can be removed"
(define x 1)
(* x 2)
------------------------------


test: "single-line cond clause with let should be reformatted when refactoring to define"
------------------------------
(define (f x)
(cond
[(number? x) (let ([y 42]) (+ x y))]
[else 'else]))
==============================
(define (f x)
(cond
[(number? x)
(define y 42)
(+ x y)]
[else 'else]))
------------------------------


test: "single-line match clause with let should be reformatted when refactoring to define"
------------------------------
(require racket/match)
(define (f x)
(match x
[(? number? x) (let ([y 42]) (+ x y))]
[_ 'else]))
==============================
(require racket/match)
(define (f x)
(match x
[(? number? x)
(define y 42)
(+ x y)]
[_ 'else]))
------------------------------
6 changes: 5 additions & 1 deletion default-recommendations/let-binding-suggestions.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@


(require (for-syntax racket/base)
racket/list
racket/set
rebellion/private/static-name
resyntax/base
Expand Down Expand Up @@ -42,7 +43,10 @@
#:description
"Internal definitions are recommended instead of `let` expressions, to reduce nesting."
(~seq leading-body ... let-expression:refactorable-let-expression)
#:with (replacement ...) #'(~focus-replacement-on (let-expression.refactored ...))
#:with (replacement ...)
(if (empty? (attribute leading-body))
(attribute let-expression.refactored)
#'(~focus-replacement-on (let-expression.refactored ...)))
(leading-body ... replacement ...))


Expand Down