summaryrefslogtreecommitdiffhomepage
path: root/src/parse.y
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-04-21 08:56:31 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-04-21 08:56:31 +0900
commit4654db4fdc3c83c6feb7d6e49afa61d341a74af7 (patch)
treebf88cf0c977429186d26d1b81a0405f38b0640cd /src/parse.y
parent5f846923675fca5a931d6a317078e34e880d11a5 (diff)
parent9eaddfab4455513ef6f3dbb89eca80a7798bb49a (diff)
downloadmruby-4654db4fdc3c83c6feb7d6e49afa61d341a74af7.tar.gz
mruby-4654db4fdc3c83c6feb7d6e49afa61d341a74af7.zip
Merge pull request #2096 from nobu/def_in_cmdarg
Def in cmdarg
Diffstat (limited to 'src/parse.y')
-rw-r--r--src/parse.y8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/parse.y b/src/parse.y
index 053b5f3e9..1a3dadd61 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -997,7 +997,7 @@ heredoc_end(parser_state *p)
node *nd;
mrb_sym id;
int num;
- unsigned int stack;
+ stack_type stack;
const struct vtable *vars;
}
@@ -2226,6 +2226,8 @@ primary : literal
{
p->in_def++;
$<nd>$ = local_switch(p);
+ $<stack>1 = p->cmdarg_stack;
+ p->cmdarg_stack = 0;
}
f_arglist
bodystmt
@@ -2234,12 +2236,15 @@ primary : literal
$$ = new_def(p, $2, $4, $5);
local_resume(p, $<nd>3);
p->in_def--;
+ p->cmdarg_stack = $<stack>1;
}
| keyword_def singleton dot_or_colon {p->lstate = EXPR_FNAME;} fname
{
p->in_single++;
p->lstate = EXPR_ENDFN; /* force for args */
$<nd>$ = local_switch(p);
+ $<stack>1 = p->cmdarg_stack;
+ p->cmdarg_stack = 0;
}
f_arglist
bodystmt
@@ -2248,6 +2253,7 @@ primary : literal
$$ = new_sdef(p, $2, $5, $7, $8);
local_resume(p, $<nd>6);
p->in_single--;
+ p->cmdarg_stack = $<stack>1;
}
| keyword_break
{