Feature #19714
closedAdd Refinement#refined_module
Description
Eregon (Benoit Daloze) wrote in https://bugs.ruby-lang.org/issues/12737#note-15:
Refinement#refined_class
is a bit strange given it can return a module.
How about addingRefinement#refined_module
as an alias for clarity?
I'm for it. What do you think, Matz?
Updated by Eregon (Benoit Daloze) over 1 year ago
- Related to Feature #12737: Module#defined_refinements added
Updated by matz (Yukihiro Matsumoto) over 1 year ago
I am not 100% satisfied. Probably (unlike class_eval
and module_eval
whose class/module distinction is for the receiver), the method returns a class or a module, unrelated to the name.
Is there any idea?
Matz.
Updated by austin (Austin Ziegler) over 1 year ago
matz (Yukihiro Matsumoto) wrote in #note-2:
I am not 100% satisfied. Probably (unlike
class_eval
andmodule_eval
whose class/module distinction is for the receiver), the method returns a class or a module, unrelated to the name.
Is there any idea?
#refined_target
#refined_subject
#refined_receiver
#refined_context
The first one I came up with is #refined_subject
in the same sense as #subject
in RSpec: http://rspec.info/features/3-12/rspec-core/subject/explicit-subject/
Updated by matz (Yukihiro Matsumoto) over 1 year ago
Among those proposed names, target
and subject
are acceptable. I am not sure refined_
prefix required or not, as not being English native.
Maybe should we admit the design mistake and make refined_class
obsolete?
Matz.
Updated by shugo (Shugo Maeda) over 1 year ago
matz (Yukihiro Matsumoto) wrote in #note-4:
Among those proposed names,
target
andsubject
are acceptable. I am not surerefined_
prefix required or not, as not being English native.
Maybe should we admit the design mistake and makerefined_class
obsolete?
I prefer target
and agree to making refined_class
obsolete.
Updated by Eregon (Benoit Daloze) over 1 year ago
Make obsolete = deprecate it, right? (sounds OK)
Refinement#target
sounds good to me.
Updated by shugo (Shugo Maeda) over 1 year ago
Eregon (Benoit Daloze) wrote in #note-6:
Make obsolete = deprecate it, right? (sounds OK)
I mean to add a warning in 3.3 and remove refined_class in 3.4:
Updated by shugo (Shugo Maeda) over 1 year ago
- Status changed from Assigned to Closed
Applied in changeset git|a542512b7c394847a488e9b94d9defebe26003ce.
Add Refinement#target and deprecate Refinement#refined_class
[Feature #19714]
Updated by hsbt (Hiroshi SHIBATA) 2 days ago
- Related to Feature #19366: Rename/alias Refinedment#refined_class => #refined_module added
Updated by hsbt (Hiroshi SHIBATA) 2 days ago
- Related to Feature #20901: What's status of Refinement#refined_class? added