From 9f85c5e4834cae173c08292dfcb99d87d31cb398 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 31 Mar 2021 15:57:43 +0900 Subject: codegen.c: `yield` outside of method is now `SyntaxError`. --- mrbgems/mruby-compiler/core/codegen.c | 4 ++-- test/t/syntax.rb | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index a17dbf972..4d7c5fa8c 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2355,7 +2355,7 @@ codegen(codegen_scope *s, node *tree, int val) case NODE_YIELD: { codegen_scope *s2 = s; - int lv = 0, ainfo = 0; + int lv = 0, ainfo = -1; int n = 0, sendv = 0; while (!s2->mscope) { @@ -2365,8 +2365,8 @@ codegen(codegen_scope *s, node *tree, int val) } if (s2) { ainfo = s2->ainfo; - if (ainfo < 0) codegen_error(s, "invalid yield (SyntaxError)"); } + if (ainfo < 0) codegen_error(s, "invalid yield (SyntaxError)"); push(); if (tree) { n = gen_values(s, tree, VAL, 0); diff --git a/test/t/syntax.rb b/test/t/syntax.rb index 3b6de6c18..b3ee2d438 100644 --- a/test/t/syntax.rb +++ b/test/t/syntax.rb @@ -35,9 +35,10 @@ assert('super', '11.3.4') do end assert('yield', '11.3.5') do - assert_raise LocalJumpError do - yield - end +# it's syntax error now +# assert_raise LocalJumpError do +# yield +# end assert_raise LocalJumpError do o = Object.new def o.foo -- cgit v1.2.3