[#119637] Behavior of raising from rescue blocks when multiple rescue blocks exist — Rodrigo Rosenfeld Rosas via ruby-core <ruby-core@...>
Hello, I couldn't find any documentation about the subject, so I thought
3 messages
2024/10/29
[ruby-core:119573] [Ruby master Bug#20716] Different instance_method behavior in Ruby 2.7 and Ruby 3.x
From:
"jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>
Date:
2024-10-21 15:12:24 UTC
List:
ruby-core #119573
Issue #20716 has been updated by jeremyevans0 (Jeremy Evans).
natton (Tien Truong) wrote in #note-9:
> Is there a way to backport this fix to Ruby version 3.1 and 3.2
Ruby 3.2 was recently fixed, and it will be in the next Ruby 3.2 release. Ruby 3.1 is in security fix only mode, and this is not a security fix, so I do not think it will be patched.
----------------------------------------
Bug #20716: Different instance_method behavior in Ruby 2.7 and Ruby 3.x
https://bugs.ruby-lang.org/issues/20716#change-110192
* Author: natton (Tien Truong)
* Status: Closed
* ruby -v: 3.3.1
* Backport: 3.1: REQUIRED, 3.2: DONE, 3.3: REQUIRED
----------------------------------------
Hi, I am working on upgrading our project from 2.7 to 3.x and found a breaking change in `instance_method` behavior.
Here is the code snippet
```
module A
def test(*args)
super
end
end
module B
def test(a)
puts a
end
end
B.prepend(A)
a = lambda do
puts 'lambda'
end
class C
include B
end
B.instance_method(:test).bind(C.new).call(1)
# Ruby 2.7: 1
# Ruby 3.0: 1
# Ruby 3.1: 1
B.module_exec do
define_method(:test, a)
end
B.instance_method(:test).bind(C.new).call
# Ruby 2.7: lambda
# Ruby 3.0: wrong number of arguments (given 0, expected 1) (ArgumentError)
# Ruby 3.1: wrong number of arguments (given 0, expected 1) (ArgumentError)
```
I don't know if this is a bug or a correct intention.
My specs:
- Ruby manager: rbenv
- Tested on
- ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
- ruby 3.0.7p220 (2024-04-23 revision 724a071175) [x86_64-linux]
- ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
- ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [x86_64-linux]
- ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux]
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/