diff options
| -rw-r--r-- | src/vm.c | 4 | ||||
| -rw-r--r-- | test/t/syntax.rb | 7 |
2 files changed, 11 insertions, 0 deletions
@@ -1732,6 +1732,10 @@ RETRY_TRY_BLOCK: } stack = e->stack + 1; } + if (mrb_nil_p(stack[m1+r+m2])) { + localjump_error(mrb, LOCALJUMP_ERROR_YIELD); + goto L_RAISE; + } regs[a] = stack[m1+r+m2]; NEXT; } diff --git a/test/t/syntax.rb b/test/t/syntax.rb index 4ba171f9a..25ae09828 100644 --- a/test/t/syntax.rb +++ b/test/t/syntax.rb @@ -38,6 +38,13 @@ assert('yield', '11.3.5') do assert_raise LocalJumpError do yield end + assert_raise LocalJumpError do + o = Object.new + def o.foo + yield + end + o.foo + end end assert('Abbreviated variable assignment', '11.4.2.3.2') do |
