mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-metaprog: make #global_variables, #local_variables private
This commit is contained in:
@@ -677,8 +677,8 @@ mrb_mruby_metaprog_gem_init(mrb_state* mrb)
|
||||
struct RClass *krn = mrb->kernel_module;
|
||||
struct RClass *mod = mrb->module_class;
|
||||
|
||||
mrb_define_method_id(mrb, krn, MRB_SYM(global_variables), mrb_f_global_variables, MRB_ARGS_NONE()); /* 15.3.1.3.14 (15.3.1.2.4) */
|
||||
mrb_define_method_id(mrb, krn, MRB_SYM(local_variables), mrb_local_variables, MRB_ARGS_NONE()); /* 15.3.1.3.28 (15.3.1.2.7) */
|
||||
mrb_define_private_method_id(mrb, krn, MRB_SYM(global_variables), mrb_f_global_variables, MRB_ARGS_NONE()); /* 15.3.1.3.14 (15.3.1.2.4) */
|
||||
mrb_define_private_method_id(mrb, krn, MRB_SYM(local_variables), mrb_local_variables, MRB_ARGS_NONE()); /* 15.3.1.3.28 (15.3.1.2.7) */
|
||||
|
||||
mrb_define_method_id(mrb, krn, MRB_SYM(singleton_class), mrb_singleton_class, MRB_ARGS_NONE());
|
||||
mrb_define_method_id(mrb, krn, MRB_SYM_Q(instance_variable_defined), mrb_obj_ivar_defined, MRB_ARGS_REQ(1)); /* 15.3.1.3.20 */
|
||||
|
||||
@@ -89,10 +89,6 @@ assert('Kernel#singleton_methods', '15.3.1.3.45') do
|
||||
assert_equal singleton_methods.class, Array
|
||||
end
|
||||
|
||||
assert('Kernel.global_variables', '15.3.1.2.4') do
|
||||
assert_equal Array, Kernel.global_variables.class
|
||||
end
|
||||
|
||||
assert('Kernel#global_variables', '15.3.1.3.14') do
|
||||
variables1 = global_variables
|
||||
assert_equal Array, variables1.class
|
||||
@@ -104,6 +100,8 @@ assert('Kernel#global_variables', '15.3.1.3.14') do
|
||||
assert_equal(1, variables2.size - variables1.size)
|
||||
end
|
||||
|
||||
# Kernel.global_variables is not provided by mruby. '15.3.1.2.4'
|
||||
|
||||
assert('Kernel#local_variables', '15.3.1.3.28') do
|
||||
assert_equal Array, local_variables.class
|
||||
|
||||
@@ -115,28 +113,7 @@ assert('Kernel#local_variables', '15.3.1.3.28') do
|
||||
assert_equal [:a], local_var_list
|
||||
end
|
||||
|
||||
assert('Kernel.local_variables', '15.3.1.2.7') do
|
||||
a, b = 0, 1
|
||||
a += b
|
||||
|
||||
vars = Kernel.local_variables.sort
|
||||
assert_equal [:a, :b, :vars], vars
|
||||
|
||||
assert_equal [:a, :b, :c, :vars], Proc.new { |a, b|
|
||||
c = 2
|
||||
# Kernel#local_variables: 15.3.1.3.28
|
||||
local_variables.sort
|
||||
}.call(-1, -2)
|
||||
|
||||
a = Object.new
|
||||
def a.hoge(vars, *, **)
|
||||
Proc.new {
|
||||
x, y = 1, 2
|
||||
local_variables.sort
|
||||
}
|
||||
end
|
||||
assert_equal([:vars, :x, :y]) { a.hoge(0).call }
|
||||
end
|
||||
# Kernel.local_variables is not provided by mruby. '15.3.1.2.7'
|
||||
|
||||
assert('Kernel#define_singleton_method') do
|
||||
o = Object.new
|
||||
|
||||
Reference in New Issue
Block a user