💭

[Bug #20094] Ruby 3.3.0 で後置 `while` の挙動が変わっているというバグ報告

2024/02/22に公開

[Bug #20094] Inline while loop behavior changed unexpectedly in 3.3.0

  • Ruby 3.3.0 で後置 while の挙動が変わっているというバグ報告
(p 1) while false
# Ruby 3.2 => nothing
# Ruby 3.3 => 1

(p 1; p 2) while false
# Ruby 3.2 => nothing
# Ruby 3.3 => 1 2
  • この問題は既に開発版の Ruby では修正済み
  • 多分バックポートされているので多分 Ruby 3.3.1 では修正が取り込まれるはず
  • ちなみに while の左辺を begin end にすることで意図的に do ~ while のような処理にすることは可能
begin
  p 1
end while false
# Ruby 3.2 => 1
# Ruby 3.3 => 1
GitHubで編集を提案

Discussion