[ruby-core:95245] [Ruby master Bug#16242] Refinements method call to failed
From:
manga.osyo@...
Date:
2019-10-06 11:51:01 UTC
List:
ruby-core #95245
Issue #16242 has been updated by osyo (manga osyo).
Sorry, link was wrong.
You can also confirm that it is reproduced here.
https://wandbox.org/permlink/I6tQesDRntT7JZqB
----------------------------------------
Bug #16242: Refinements method call to failed
https://bugs.ruby-lang.org/issues/16242#change-81919
* Author: osyo (manga osyo)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: 2.7.0
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Refinements method call to failed with `prepend`.
## No problem
```ruby
module M
# Methods that you want to call only within this context
refine M do
def refine_method
"refine_method"
end
end
using M
def hoge
# OK: `refine_method` calls the method
refine_method
end
end
class X
include M
end
pp X.new.hoge
# => "refine_method"
```
## No problem
* If `prepend` another module, the search for `refine_method` fails
```ruby
module OtherM
end
module M
# Added prepend
prepend OtherM
refine M do
def refine_method
"refine_method"
end
end
using M
def hoge
# Error: `hoge': undefined local variable or method `refine_method' for #<X:0x00007fa05a024390> (NameError)
refine_method
end
end
class X
include M
end
# Error
pp X.new.hoge
```
## Environment
Reproduced in the following environment.
```ruby
RUBY_VERSION # => "2.7.0"
RUBY_REVISION # => "02dfa0f16361c498e0f529054b00e3e09730892b"
RUBY_PLATFORM # => "x86_64-darwin17"
```
You can also confirm that it is reproduced here.
https://wandbox.org/permlink/e73sVBRWQBfXP3zH
--
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>