[#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:119545] [Ruby master Bug#20716] Different instance_method behavior in Ruby 2.7 and Ruby 3.x
From:
"nagachika (Tomoyuki Chikanaga) via ruby-core" <ruby-core@...>
Date:
2024-10-21 08:50:16 UTC
List:
ruby-core #119545
Issue #20716 has been updated by nagachika (Tomoyuki Chikanaga).
Backport changed from 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED to 3.1: REQUIRED, 3.2: DONE, 3.3: REQUIRED
ruby_3_2 commit:cb75fcef6feb126a67874109ce1503976a6f90cc merged revision(s) commit:6118e8a47394409b53164b60e79fadf348b97db3, commit:dc64448202299633a235f310b8bf2192263f274f.
----------------------------------------
Bug #20716: Different instance_method behavior in Ruby 2.7 and Ruby 3.x
https://bugs.ruby-lang.org/issues/20716#change-110162
* 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/