[ruby-core:96446] [Ruby master Feature#15373] Proposal: Enable refinements to `#method` and `#instance_method`
From:
nobu@...
Date:
2019-12-24 01:39:13 UTC
List:
ruby-core #96446
Issue #15373 has been updated by nobu (Nobuyoshi Nakada).
https://docs.google.com/document/u/1/d/1W_wrFsFxxU1MepA6HBpfl-9h-nLD8EBsgMsS7yTDvHE/pub
----------------------------------------
Feature #15373: Proposal: Enable refinements to `#method` and `#instance_method`
https://bugs.ruby-lang.org/issues/15373#change-83370
* Author: osyo (manga osyo)
* Status: Closed
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
Proposal enable refinements to `#method` and `#instance_method`.
It can be used in the following cases.
```ruby
# default call to #pp
module P2PP
refine Kernel do
def p obj
pp obj
end
end
end
using P2PP
# call to Kernel.#pp
[1, 2, 3].map(&method(:p))
```
Also, when checking the defined position as follows, the `refine` place is reflected.
```ruby
module P2PP
refine Kernel do
def p obj
pp obj
end
end
end
# Output to refine defined position
# Before
p method(:p).source_location
# => nil
p Kernel.instance_method(:p).source_location
# => nil
using P2PP
# After
p method(:p).source_location
# => ["../ruby/test.rb", 4]
p Kernel.instance_method(:p).source_location
# => ["../ruby/test.rb", 4]
```
I want `.:` operators to work.
https://bugs.ruby-lang.org/issues/13581
pull reqiest: https://github.com/ruby/ruby/pull/2034
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>