diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-06-10 18:46:57 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-06-10 18:46:57 +0900 |
| commit | 38f1da6f26bde5185612b66a1b1fc94f78654d78 (patch) | |
| tree | aeab148f6ff6e2e8421a1022102cf2c2fbf7e996 | |
| parent | 04999e969f9cb0dcf70e313caae52f115163ab95 (diff) | |
| download | mruby-38f1da6f26bde5185612b66a1b1fc94f78654d78.tar.gz mruby-38f1da6f26bde5185612b66a1b1fc94f78654d78.zip | |
`Kernel#global_variables` should not include undefined `$1`-`$9`
- They are not include in Ruby.
- Appear in duplicate when `$1`-`$9` are defined.
| -rw-r--r-- | mrbgems/mruby-metaprog/test/metaprog.rb | 13 | ||||
| -rw-r--r-- | src/variable.c | 8 |
2 files changed, 8 insertions, 13 deletions
diff --git a/mrbgems/mruby-metaprog/test/metaprog.rb b/mrbgems/mruby-metaprog/test/metaprog.rb index 329580abc..685fdf196 100644 --- a/mrbgems/mruby-metaprog/test/metaprog.rb +++ b/mrbgems/mruby-metaprog/test/metaprog.rb @@ -104,11 +104,14 @@ assert('Kernel.global_variables', '15.3.1.2.4') do end assert('Kernel#global_variables', '15.3.1.3.14') do - variables = global_variables - assert_equal Array, variables.class - 1.upto(9) do |i| - assert_equal variables.include?(:"$#{i}"), true - end + variables1 = global_variables + assert_equal Array, variables1.class + assert_not_include(variables1, :$kernel_global_variables_test) + + $kernel_global_variables_test = nil + variables2 = global_variables + assert_include(variables2, :$kernel_global_variables_test) + assert_equal(1, variables2.size - variables1.size) end assert('Kernel.local_variables', '15.3.1.2.7') do diff --git a/src/variable.c b/src/variable.c index ee21a3b96..779f206dc 100644 --- a/src/variable.c +++ b/src/variable.c @@ -965,16 +965,8 @@ mrb_f_global_variables(mrb_state *mrb, mrb_value self) { iv_tbl *t = mrb->globals; mrb_value ary = mrb_ary_new(mrb); - size_t i; - char buf[3]; iv_foreach(mrb, t, gv_i, &ary); - buf[0] = '$'; - buf[2] = 0; - for (i = 1; i <= 9; ++i) { - buf[1] = (char)(i + '0'); - mrb_ary_push(mrb, ary, mrb_symbol_value(mrb_intern(mrb, buf, 2))); - } return ary; } |
