diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-02-07 22:44:36 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-02-07 22:44:36 +0900 |
| commit | bdc9de875f5545d4dbf8136dbfb576a0caacf7e3 (patch) | |
| tree | 89226f61f7009d4f3e07fe1160e1220318fbe37d /mrbgems/mruby-compiler/core/codegen.c | |
| parent | 156641515cade4018c2551d5da70054d10dabf39 (diff) | |
| download | mruby-bdc9de875f5545d4dbf8136dbfb576a0caacf7e3.tar.gz mruby-bdc9de875f5545d4dbf8136dbfb576a0caacf7e3.zip | |
Add `OP_ENTER` to blocks without parameters; fix #4175
So that `lambda{}.call(1)` raises `ArgumentError` as CRuby does.
Also, fixed junk assignment for `lambda{|;a|p a}.call{}`.
Diffstat (limited to 'mrbgems/mruby-compiler/core/codegen.c')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index cc46f835f..48bf06461 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -734,7 +734,10 @@ lambda_body(codegen_scope *s, node *tree, int blk) lp->pc0 = new_label(s); } tree = tree->cdr; - if (tree->car) { + if (tree->car == NULL) { + genop_W(s, OP_ENTER, 0); + } + else { mrb_aspec a; int ma, oa, ra, pa, ka, kd, ba; int pos, i; |
