Feature #19714
closedAdd Refinement#refined_module
Description
Eregon (Benoit Daloze) wrote in https://bugs.ruby-lang.org/issues/12737#note-15:
Refinement#refined_classis a bit strange given it can return a module.
How about addingRefinement#refined_moduleas an alias for clarity?
I'm for it. What do you think, Matz?
Updated by Eregon (Benoit Daloze) over 2 years ago
- Related to Feature #12737: Module#defined_refinements added
Updated by matz (Yukihiro Matsumoto) over 2 years 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 2 years ago
matz (Yukihiro Matsumoto) wrote in #note-2:
I am not 100% satisfied. Probably (unlike
class_evalandmodule_evalwhose 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 2 years 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 2 years ago
matz (Yukihiro Matsumoto) wrote in #note-4:
Among those proposed names,
targetandsubjectare acceptable. I am not surerefined_prefix required or not, as not being English native.
Maybe should we admit the design mistake and makerefined_classobsolete?
I prefer target and agree to making refined_class obsolete.
Updated by Eregon (Benoit Daloze) over 2 years ago
Make obsolete = deprecate it, right? (sounds OK)
Refinement#target sounds good to me.
Updated by shugo (Shugo Maeda) over 2 years 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) about 2 years 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) 11 months ago
- Related to Feature #19366: Rename/alias Refinedment#refined_class => #refined_module added
Updated by hsbt (Hiroshi SHIBATA) 11 months ago
- Related to Feature #20901: What's status of Refinement#refined_class? added