From: "koic (Koichi ITO)" Date: 2021-10-26T07:05:55+00:00 Subject: [ruby-core:105802] [Ruby master Bug#18268] Behavior change when `each_cons` and `break ... if false` are combined in Ruby 3.1 Issue #18268 has been updated by koic (Koichi ITO). Thank you for the information source. This looks like a breaking change in Ruby 3.1, but it's okay if it's a considered impact. ---------------------------------------- Bug #18268: Behavior change when `each_cons` and `break ... if false` are combined in Ruby 3.1 https://bugs.ruby-lang.org/issues/18268#change-94320 * Author: koic (Koichi ITO) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.0dev (2021-10-26T00:30:42Z master 7d4c59203f) [x86_64-darwin19] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- I'm not sure the details, but the following behavior has changed between Ruby 3.0.2 (and earlier) and Ruby 3.1.0-dev. ```ruby # example.rb def foo [1, 2].each_cons(2) do |one, two| break one if false end end p foo ``` ## Expected Behavior (Ruby 3.0.2) It returns `nil`. ```console % rbenv local 3.0.2 % ruby -v ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-darwin19] % ruby example.rb nil ``` ## Actual Behavior (Ruby 3.1.0-dev) It returns `[1, 2]`. ```console % rbenv local 3.1.0-dev % ruby -v ruby 3.1.0dev (2021-10-26T00:30:42Z master 7d4c59203f) [x86_64-darwin19] % ruby example.rb [1, 2] ``` I encountered this issue with the following RuboCop build error. https://app.circleci.com/pipelines/github/rubocop/rubocop/5414/workflows/4a7e4b81-7380-41e5-8ede-e28d9160010d/jobs/201236 The code I encountered is below. https://github.com/rubocop/rubocop/blob/v1.22.2/lib/rubocop/cop/layout/block_alignment.rb#L104-L106 -- https://bugs.ruby-lang.org/ Unsubscribe: