Project

General

Profile

Actions

Feature #19714

closed

Add Refinement#refined_module

Added by shugo (Shugo Maeda) 11 months ago. Updated 9 months ago.

Status:
Closed
Target version:
[ruby-core:113779]

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 adding Refinement#refined_module as an alias for clarity?

I'm for it. What do you think, Matz?


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #12737: Module#defined_refinementsClosedshugo (Shugo Maeda)Actions
Actions #1

Updated by Eregon (Benoit Daloze) 11 months ago

Updated by matz (Yukihiro Matsumoto) 10 months 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) 10 months ago

matz (Yukihiro Matsumoto) wrote in #note-2:

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?

  • #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) 9 months 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) 9 months ago

matz (Yukihiro Matsumoto) wrote in #note-4:

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?

I prefer target and agree to making refined_class obsolete.

Updated by Eregon (Benoit Daloze) 9 months ago

Make obsolete = deprecate it, right? (sounds OK)

Refinement#target sounds good to me.

Updated by shugo (Shugo Maeda) 9 months 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:

https://github.com/ruby/ruby/pull/8075/files

Actions #8

Updated by shugo (Shugo Maeda) 9 months ago

  • Status changed from Assigned to Closed

Applied in changeset git|a542512b7c394847a488e9b94d9defebe26003ce.


Add Refinement#target and deprecate Refinement#refined_class

[Feature #19714]

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0