Add Refinement#target and deprecate Refinement#refined_class
[Feature #19714]
This commit is contained in:
parent
cfd7729ce7
commit
a542512b7c
Notes:
git
2023-07-31 08:23:37 +00:00
5
NEWS.md
5
NEWS.md
@ -56,6 +56,11 @@ Note: We're only listing outstanding class updates.
|
|||||||
for long running applications. The actual optimizations performed are entirely
|
for long running applications. The actual optimizations performed are entirely
|
||||||
implementation specific and may change in the future without notice. [[Feature #18885]
|
implementation specific and may change in the future without notice. [[Feature #18885]
|
||||||
|
|
||||||
|
* Refinement
|
||||||
|
|
||||||
|
* Add Refinement#target as an alternative of Refinement#refined_class.
|
||||||
|
Refinement#refined_class is deprecated and will be removed in Ruby 3.4. [[Feature #19714]]
|
||||||
|
|
||||||
## Stdlib updates
|
## Stdlib updates
|
||||||
|
|
||||||
The following default gems are updated.
|
The following default gems are updated.
|
||||||
|
20
eval.c
20
eval.c
@ -1346,9 +1346,9 @@ rb_using_module(const rb_cref_t *cref, VALUE module)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* refined_class -> class
|
* target -> class
|
||||||
*
|
*
|
||||||
* Return the class refined by the receiver.
|
* Return the class or module refined by the receiver.
|
||||||
*/
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
rb_refinement_module_get_refined_class(VALUE module)
|
rb_refinement_module_get_refined_class(VALUE module)
|
||||||
@ -1359,6 +1359,19 @@ rb_refinement_module_get_refined_class(VALUE module)
|
|||||||
return rb_attr_get(module, id_refined_class);
|
return rb_attr_get(module, id_refined_class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* refined_class -> class
|
||||||
|
*
|
||||||
|
* Return the class refined by the receiver.
|
||||||
|
*/
|
||||||
|
static VALUE
|
||||||
|
rb_refinement_refined_class(VALUE module)
|
||||||
|
{
|
||||||
|
rb_warn_deprecated_to_remove("3.4", "Refinement#refined_class", "Refinement#target");
|
||||||
|
return rb_refinement_module_get_refined_class(module);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_activated_refinement(VALUE activated_refinements,
|
add_activated_refinement(VALUE activated_refinements,
|
||||||
VALUE klass, VALUE refinement)
|
VALUE klass, VALUE refinement)
|
||||||
@ -2067,7 +2080,8 @@ Init_eval(void)
|
|||||||
rb_mod_s_used_refinements, 0);
|
rb_mod_s_used_refinements, 0);
|
||||||
rb_undef_method(rb_cClass, "refine");
|
rb_undef_method(rb_cClass, "refine");
|
||||||
rb_define_private_method(rb_cRefinement, "import_methods", refinement_import_methods, -1);
|
rb_define_private_method(rb_cRefinement, "import_methods", refinement_import_methods, -1);
|
||||||
rb_define_method(rb_cRefinement, "refined_class", rb_refinement_module_get_refined_class, 0);
|
rb_define_method(rb_cRefinement, "target", rb_refinement_module_get_refined_class, 0);
|
||||||
|
rb_define_method(rb_cRefinement, "refined_class", rb_refinement_refined_class, 0);
|
||||||
rb_undef_method(rb_cRefinement, "append_features");
|
rb_undef_method(rb_cRefinement, "append_features");
|
||||||
rb_undef_method(rb_cRefinement, "prepend_features");
|
rb_undef_method(rb_cRefinement, "prepend_features");
|
||||||
rb_undef_method(rb_cRefinement, "extend_object");
|
rb_undef_method(rb_cRefinement, "extend_object");
|
||||||
|
@ -1798,7 +1798,7 @@ class TestRefinement < Test::Unit::TestCase
|
|||||||
assert_equal([int_refinement, str_refinement], m.refinements)
|
assert_equal([int_refinement, str_refinement], m.refinements)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_refined_class
|
def test_target
|
||||||
refinements = Module.new {
|
refinements = Module.new {
|
||||||
refine Integer do
|
refine Integer do
|
||||||
end
|
end
|
||||||
@ -1806,7 +1806,9 @@ class TestRefinement < Test::Unit::TestCase
|
|||||||
refine String do
|
refine String do
|
||||||
end
|
end
|
||||||
}.refinements
|
}.refinements
|
||||||
|
assert_equal(Integer, refinements[0].target)
|
||||||
assert_equal(Integer, refinements[0].refined_class)
|
assert_equal(Integer, refinements[0].refined_class)
|
||||||
|
assert_equal(String, refinements[1].target)
|
||||||
assert_equal(String, refinements[1].refined_class)
|
assert_equal(String, refinements[1].refined_class)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user