mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
eval.c: warn block for using
* eval.c (ignored_block): warn if a block is given to `using`, which is probably for `Module.new`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1403dfbf31
commit
b6b1038c6b
2 changed files with 21 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Tue Dec 29 17:54:16 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* eval.c (ignored_block): warn if a block is given to `using`,
|
||||||
|
which is probably for `Module.new`.
|
||||||
|
|
||||||
Tue Dec 29 12:48:34 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Tue Dec 29 12:48:34 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* lib/ostruct.rb (OpenStruct): make respond_to? working on
|
* lib/ostruct.rb (OpenStruct): make respond_to? working on
|
||||||
|
|
16
eval.c
16
eval.c
|
@ -1273,6 +1273,16 @@ rb_mod_refine(VALUE module, VALUE klass)
|
||||||
return refinement;
|
return refinement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ignored_block(VALUE module, const char *klass)
|
||||||
|
{
|
||||||
|
const char *anon = "";
|
||||||
|
if (!RTEST(rb_search_class_path(module))) {
|
||||||
|
anon = ", maybe for Module.new";
|
||||||
|
}
|
||||||
|
rb_warn("%s""using doesn't call the given block""%s.", klass, anon);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* using(module) -> self
|
* using(module) -> self
|
||||||
|
@ -1293,6 +1303,9 @@ mod_using(VALUE self, VALUE module)
|
||||||
if (prev_cfp && prev_cfp->self != self) {
|
if (prev_cfp && prev_cfp->self != self) {
|
||||||
rb_raise(rb_eRuntimeError, "Module#using is not called on self");
|
rb_raise(rb_eRuntimeError, "Module#using is not called on self");
|
||||||
}
|
}
|
||||||
|
if (rb_block_given_p()) {
|
||||||
|
ignored_block(module, "Module#");
|
||||||
|
}
|
||||||
rb_using_module(rb_vm_cref_replace_with_duplicated_cref(), module);
|
rb_using_module(rb_vm_cref_replace_with_duplicated_cref(), module);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -1426,6 +1439,9 @@ top_using(VALUE self, VALUE module)
|
||||||
if (CREF_NEXT(cref) || (prev_cfp && rb_vm_frame_method_entry(prev_cfp))) {
|
if (CREF_NEXT(cref) || (prev_cfp && rb_vm_frame_method_entry(prev_cfp))) {
|
||||||
rb_raise(rb_eRuntimeError, "main.using is permitted only at toplevel");
|
rb_raise(rb_eRuntimeError, "main.using is permitted only at toplevel");
|
||||||
}
|
}
|
||||||
|
if (rb_block_given_p()) {
|
||||||
|
ignored_block(module, "main.");
|
||||||
|
}
|
||||||
rb_using_module(rb_vm_cref_replace_with_duplicated_cref(), module);
|
rb_using_module(rb_vm_cref_replace_with_duplicated_cref(), module);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue