mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Warning[:strict_unused_block]
to show unused block warning strictly. ```ruby class C def f = nil end class D def f = yield end [C.new, D.new].each{|obj| obj.f{}} ``` In this case, `D#f` accepts a block. However `C#f` doesn't accept a block. There are some cases passing a block with `obj.f{}` where `obj` is `C` or `D`. To avoid warnings on such cases, "unused block warning" will be warned only if there is not same name which accepts a block. On the above example, `C.new.f{}` doesn't show any warnings because there is a same name `D#f` which accepts a block. We call this default behavior as "relax mode". `strict_unused_block` new warning category changes from "relax mode" to "strict mode", we don't check same name methods and `C.new.f{}` will be warned. [Feature #15554]
This commit is contained in:
parent
4203c70dfa
commit
ab7ab9e450
Notes:
git
2024-11-06 02:06:37 +00:00
8 changed files with 20 additions and 14 deletions
4
error.c
4
error.c
|
@ -86,6 +86,7 @@ static ID id_category;
|
|||
static ID id_deprecated;
|
||||
static ID id_experimental;
|
||||
static ID id_performance;
|
||||
static ID id_strict_unused_block;
|
||||
static VALUE sym_category;
|
||||
static VALUE sym_highlight;
|
||||
static struct {
|
||||
|
@ -3584,6 +3585,7 @@ Init_Exception(void)
|
|||
id_deprecated = rb_intern_const("deprecated");
|
||||
id_experimental = rb_intern_const("experimental");
|
||||
id_performance = rb_intern_const("performance");
|
||||
id_strict_unused_block = rb_intern_const("strict_unused_block");
|
||||
id_top = rb_intern_const("top");
|
||||
id_bottom = rb_intern_const("bottom");
|
||||
id_iseq = rb_make_internal_id();
|
||||
|
@ -3596,12 +3598,14 @@ Init_Exception(void)
|
|||
st_add_direct(warning_categories.id2enum, id_deprecated, RB_WARN_CATEGORY_DEPRECATED);
|
||||
st_add_direct(warning_categories.id2enum, id_experimental, RB_WARN_CATEGORY_EXPERIMENTAL);
|
||||
st_add_direct(warning_categories.id2enum, id_performance, RB_WARN_CATEGORY_PERFORMANCE);
|
||||
st_add_direct(warning_categories.id2enum, id_strict_unused_block, RB_WARN_CATEGORY_STRICT_UNUSED_BLOCK);
|
||||
|
||||
warning_categories.enum2id = rb_init_identtable();
|
||||
st_add_direct(warning_categories.enum2id, RB_WARN_CATEGORY_NONE, 0);
|
||||
st_add_direct(warning_categories.enum2id, RB_WARN_CATEGORY_DEPRECATED, id_deprecated);
|
||||
st_add_direct(warning_categories.enum2id, RB_WARN_CATEGORY_EXPERIMENTAL, id_experimental);
|
||||
st_add_direct(warning_categories.enum2id, RB_WARN_CATEGORY_PERFORMANCE, id_performance);
|
||||
st_add_direct(warning_categories.enum2id, RB_WARN_CATEGORY_STRICT_UNUSED_BLOCK, id_strict_unused_block);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue