以下のイシューで Style/EmptyCaseCondition
に関する auto-correct の不具合のフィードバックがあったことがはじまり。
ちょうど今日、勤務先での月例会の後に残ったメンバーで、上記イシューにおける case...when
と if...elsif
での振る舞いの違いについて話していた。
まとめとしては以下のとおり、case
あるいは if
で戻り値を代入し、その中の when
節なんかで return
をしたときの振る舞いが異なるというものだった。
以下のように when
だと return
の値が返る。
def foo v = case when true return 2 end end p foo # => 2
if
だと "void value expression" エラーになる。
def bar v = if true return 2 end end bar # => hoge.rb:4: void value expression
return
のケースだけガード条件にするということも思い浮かんだが、複雑な条件式を含んだ長いメソッドになると自動修正は難しそうなのと、意味合いを変えるようなスタイル変更の offense が良いのか判断が難しかったため、帰宅後にパッチを書いたものとして以下の PR では偽陰性にしておいた。