diff options
| -rw-r--r-- | doc/mrbgems/README.md | 2 | ||||
| -rw-r--r-- | mrbgems/mruby-object-ext/src/object.c | 6 | ||||
| -rw-r--r-- | src/codegen.c | 1 | ||||
| -rw-r--r-- | test/t/syntax.rb | 9 |
4 files changed, 13 insertions, 5 deletions
diff --git a/doc/mrbgems/README.md b/doc/mrbgems/README.md index 881fbb228..65b794dc0 100644 --- a/doc/mrbgems/README.md +++ b/doc/mrbgems/README.md @@ -156,7 +156,7 @@ the following options additionally inside of your GEM specification: mruby can be extended with C. This is possible by using the C API to integrate C libraries into mruby. -### Pre-Conditions +### Preconditions mrbgems expects that you have implemented a C method called `mrb_YOURGEMNAME_gem_init(mrb_state)`. `YOURGEMNAME` will be replaced diff --git a/mrbgems/mruby-object-ext/src/object.c b/mrbgems/mruby-object-ext/src/object.c index 598ebe91d..927a23d66 100644 --- a/mrbgems/mruby-object-ext/src/object.c +++ b/mrbgems/mruby-object-ext/src/object.c @@ -59,7 +59,7 @@ nil_to_i(mrb_state *mrb, mrb_value obj) * k.instance_exec(5) {|x| @secret+x } #=> 104 */ -mrb_value +mrb_value mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_value self, struct RClass *c); static mrb_value @@ -69,7 +69,7 @@ mrb_obj_instance_exec(mrb_state *mrb, mrb_value self) int argc; mrb_value blk; struct RClass *c; - + mrb_get_args(mrb, "*&", &argv, &argc, &blk); if (mrb_nil_p(blk)) { @@ -80,7 +80,7 @@ mrb_obj_instance_exec(mrb_state *mrb, mrb_value self) case MRB_TT_SYMBOL: case MRB_TT_FIXNUM: case MRB_TT_FLOAT: - c = 0; + c = NULL; break; default: c = mrb_class_ptr(mrb_singleton_class(mrb, self)); diff --git a/src/codegen.c b/src/codegen.c index 5681ce03a..34ccd616f 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1551,7 +1551,6 @@ codegen(codegen_scope *s, node *tree, int val) // variable rhs codegen(s, t, VAL); gen_vmassignment(s, tree->car, rhs, val); - if (!val) pop(); } } break; diff --git a/test/t/syntax.rb b/test/t/syntax.rb index 332cfcca8..b975d0103 100644 --- a/test/t/syntax.rb +++ b/test/t/syntax.rb @@ -65,3 +65,12 @@ assert('Abbreviated variable assignment as returns') do end assert_equal Syntax4AbbrVarAsgnAsReturns::A.new.b, 1 end + +assert('Splat and mass assignment') do + *a = *[1,2,3] + b, *c = *[7,8,9] + + assert_equal [1,2,3], a + assert_equal 7, b + assert_equal [8,9], c +end |
