diff --git a/default-recommendations/function-shortcuts-test.rkt b/default-recommendations/function-shortcuts-test.rkt index a7426a4..f04c609 100644 --- a/default-recommendations/function-shortcuts-test.rkt +++ b/default-recommendations/function-shortcuts-test.rkt @@ -31,3 +31,8 @@ test: "apply with recursive list* can be flattened" test: "apply with quasiquoted list can be flattened" - (apply + 0 `(1 2 ,@'(3 4))) - (apply + 0 1 2 '(3 4)) + + +test: "single-case case-lambda refactorable to regular lambda" +- (case-lambda [(x y z) (+ x y z)]) +- (λ (x y z) (+ x y z)) diff --git a/default-recommendations/function-shortcuts.rkt b/default-recommendations/function-shortcuts.rkt index 92b4e64..41b1956 100644 --- a/default-recommendations/function-shortcuts.rkt +++ b/default-recommendations/function-shortcuts.rkt @@ -65,8 +65,15 @@ (id function arg ... trailing-arg.lifted ... trailing-arg.trailing)]) +(define-refactoring-rule case-lambda-with-single-case-to-lambda + #:description "This `case-lambda` form only has one case. Use a regular lambda instead." + #:literals (case-lambda) + [(case-lambda [args body ...]) (λ args body ...)]) + + (define function-shortcuts (refactoring-suite #:name (name function-shortcuts) #:rules - (list apply-flattening))) + (list apply-flattening + case-lambda-with-single-case-to-lambda)))