summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-05-14 21:41:27 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 16:21:19 +0900
commitce7508e0d52e364358294fb3eb3414763d03516c (patch)
tree4c3125a4aed9d56673f883394b77523b4d239e1b
parentc29212cf44e728a47d306bf9a25a9d8d8317a4f9 (diff)
downloadmruby-ce7508e0d52e364358294fb3eb3414763d03516c.tar.gz
mruby-ce7508e0d52e364358294fb3eb3414763d03516c.zip
Allow `rescue` modifier in endless method definitions.
-rw-r--r--mrbgems/mruby-compiler/core/parse.y21
1 files changed, 21 insertions, 0 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index 83b9ad422..2ff66be60 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -2319,18 +2319,39 @@ arg : lhs '=' arg_rhs
| defn_head f_arglist_paren '=' arg
{
$$ = $1;
+ void_expr_error(p, $4);
defn_setup(p, $$, $2, $4);
nvars_unnest(p);
p->in_def--;
}
+ | defn_head f_arglist_paren '=' arg modifier_rescue arg
+ {
+ $$ = $1;
+ void_expr_error(p, $4);
+ void_expr_error(p, $6);
+ defn_setup(p, $$, $2, new_mod_rescue(p, $4, $6));
+ nvars_unnest(p);
+ p->in_def--;
+ }
| defs_head f_arglist_paren '=' arg
{
$$ = $1;
+ void_expr_error(p, $4);
defs_setup(p, $$, $2, $4);
nvars_unnest(p);
p->in_def--;
p->in_single--;
}
+ | defs_head f_arglist_paren '=' arg modifier_rescue arg
+ {
+ $$ = $1;
+ void_expr_error(p, $4);
+ void_expr_error(p, $6);
+ defs_setup(p, $$, $2, new_mod_rescue(p, $4, $6));
+ nvars_unnest(p);
+ p->in_def--;
+ p->in_single--;
+ }
| primary
{
$$ = $1;