[#84280] [Ruby trunk Bug#14181] hangs or deadlocks from waitpid, threads, and trapping SIGCHLD — nobu@...
Issue #14181 has been updated by nobu (Nobuyoshi Nakada).
3 messages
2017/12/15
[#84398] [Ruby trunk Bug#14220] WEBrick changes - failures on MSWIN, MinGW — Greg.mpls@...
Issue #14220 has been reported by MSP-Greg (Greg L).
3 messages
2017/12/22
[#84472] Re: [ruby-dev:50394] [Ruby trunk Bug#14240] warn four special variables: $; $, $/ $\ — Eric Wong <normalperson@...>
Shouldn't English posts be on ruby-core instead of ruby-dev?
3 messages
2017/12/26
[ruby-core:84352] [Ruby trunk Bug#13129] Refinements cannot refine method_missing and respond_to_missing?
From:
matz@...
Date:
2017-12-20 00:00:47 UTC
List:
ruby-core #84352
Issue #13129 has been updated by matz (Yukihiro Matsumoto).
Tracker changed from Feature to Bug
Target version set to 2.5
ruby -v set to ruby 2.5.0dev (2017-01-14 trunk 57328) [x86_64-darwin15]
Backport set to 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
Currently, I feel negative about the proposal.
First, as Shugo commented, `method_missing` etc. are considered indirect method calls.
Second, mixing refinements (static rebinding) and `method-missing` (dynamic rebinding) are very complex and easily become complex.
This is not the final decision. You may be able to persuade me in the future. But this is my current opinion.
Matz.
----------------------------------------
Bug #13129: Refinements cannot refine method_missing and respond_to_missing?
https://bugs.ruby-lang.org/issues/13129#change-68531
* Author: matsuda (Akira Matsuda)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version: 2.5
* ruby -v: ruby 2.5.0dev (2017-01-14 trunk 57328) [x86_64-darwin15]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Refinements with method_missing and respond_to_missing? behaves very strangely.
```ruby
class C; end
using Module.new {
refine C do
def x() p:x; end
def method_missing(m, *args)
m == :foo ? p(:fooo!) : super
end
def respond_to_missing?(m, include_private = false)
(m == :foo) || super
end
end
}
C.new.x
p C.new.respond_to? :foo
C.new.foo
```
The script above doesn't respond_to :foo nor run :foo as expected.
Actually, the result differs between ruby versions.
```
% ruby -v t.rb
ruby 2.5.0dev (2017-01-14 trunk 57328) [x86_64-darwin15]
:x
false
t.rb:19:in `<main>': undefined method `foo' for #<C:0x007f90ca0fb240> (NoMethodError)
% ruby -v t.rb
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin15]
:x
false
t.rb:19:in `<main>': undefined method `foo' for #<C:0x007f80ae097780> (NoMethodError)
% ruby -v t.rb
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]
:x
false
t.rb:19:in `<main>': undefined method `foo' for #<C:0x007fd89c83b518> (NoMethodError)
% ruby -v t.rb
ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-darwin15]
:x
false
:fooo!
% ruby -v t.rb
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-darwin15.0]
:x
false
:fooo!
% ruby -v t.rb
ruby 2.0.0p648 (2015-12-16 revision 53162) [x86_64-darwin15.6.0]
t.rb:4: warning: Refinements are experimental, and the behavior may change in future versions of Ruby!
:x
false
:fooo!
```
What I can tell is that method_missing was broken at somewhere in between 2.2 and 2.3, and respond_to_missing? has never worked correctly.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>