diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-09-19 14:41:59 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-09-20 13:07:58 +0900 |
| commit | 683baec4f0249d1677863ced20a7921734e6faed (patch) | |
| tree | 5ea77f64a8d23544af941dde75cfa66514ffa6ba | |
| parent | 01ce5824f0c74cb982b8a7378a15ad1d4f5653e9 (diff) | |
| download | mruby-683baec4f0249d1677863ced20a7921734e6faed.tar.gz mruby-683baec4f0249d1677863ced20a7921734e6faed.zip | |
Add optional argument to `Module#class_variables`.
| -rw-r--r-- | mrbgems/mruby-metaprog/src/metaprog.c | 2 | ||||
| -rw-r--r-- | src/variable.c | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/mrbgems/mruby-metaprog/src/metaprog.c b/mrbgems/mruby-metaprog/src/metaprog.c index 2b20f59b7..87f1d3280 100644 --- a/mrbgems/mruby-metaprog/src/metaprog.c +++ b/mrbgems/mruby-metaprog/src/metaprog.c @@ -697,7 +697,7 @@ mrb_mruby_metaprog_gem_init(mrb_state* mrb) mrb_define_method(mrb, krn, "define_singleton_method", mod_define_singleton_method, MRB_ARGS_ANY()); mrb_define_method(mrb, krn, "send", mrb_f_send, MRB_ARGS_ANY()); /* 15.3.1.3.44 */ - mrb_define_method(mrb, mod, "class_variables", mrb_mod_class_variables, MRB_ARGS_NONE()); /* 15.2.2.4.19 */ + mrb_define_method(mrb, mod, "class_variables", mrb_mod_class_variables, MRB_ARGS_OPT(1)); /* 15.2.2.4.19 */ mrb_define_method(mrb, mod, "remove_class_variable", mrb_mod_remove_cvar, MRB_ARGS_REQ(1)); /* 15.2.2.4.39 */ mrb_define_method(mrb, mod, "class_variable_defined?", mrb_mod_cvar_defined, MRB_ARGS_REQ(1)); /* 15.2.2.4.16 */ mrb_define_method(mrb, mod, "class_variable_get", mrb_mod_cvar_get, MRB_ARGS_REQ(1)); /* 15.2.2.4.17 */ diff --git a/src/variable.c b/src/variable.c index 06756a69f..cb06a8341 100644 --- a/src/variable.c +++ b/src/variable.c @@ -595,7 +595,7 @@ cv_i(mrb_state *mrb, mrb_sym sym, mrb_value v, void *p) /* 15.2.2.4.19 */ /* * call-seq: - * mod.class_variables -> array + * mod.class_variables(inherit=true) -> array * * Returns an array of the names of class variables in <i>mod</i>. * @@ -613,11 +613,14 @@ mrb_mod_class_variables(mrb_state *mrb, mrb_value mod) { mrb_value ary; struct RClass *c; + mrb_bool inherit = TRUE; + mrb_get_args(mrb, "|b", &inherit); ary = mrb_ary_new(mrb); c = mrb_class_ptr(mod); while (c) { iv_foreach(mrb, c->iv, cv_i, &ary); + if (!inherit) break; c = c->super; } return ary; |
