summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-09-25 10:14:36 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-09-25 10:39:49 +0900
commite663299a5f7a980aae39f3e87cec064ae19a870c (patch)
tree8270dea6479350522af362d7c34a114023766315 /parse.y
parentc99fb0f41e7bb88a4d5891e86bd54def2fca1de4 (diff)
Simplified duplicate code
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y22
1 files changed, 11 insertions, 11 deletions
diff --git a/parse.y b/parse.y
index 8adf0fc016..8686bd4e42 100644
--- a/parse.y
+++ b/parse.y
@@ -9311,15 +9311,9 @@ parser_yylex(struct parser_params *p)
case '{':
++p->lex.brace_nest;
- if (lambda_beginning_p()) {
- SET_LEX_STATE(EXPR_BEG);
- COND_PUSH(0);
- CMDARG_PUSH(0);
- p->lex.paren_nest++;
- return tLAMBEG;
- }
- p->lex.paren_nest++;
- if (IS_lex_state(EXPR_LABELED))
+ if (lambda_beginning_p())
+ c = tLAMBEG;
+ else if (IS_lex_state(EXPR_LABELED))
c = tLBRACE; /* hash */
else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
c = '{'; /* block (primary) */
@@ -9327,10 +9321,16 @@ parser_yylex(struct parser_params *p)
c = tLBRACE_ARG; /* block (expr) */
else
c = tLBRACE; /* hash */
+ if (c != tLBRACE) {
+ p->command_start = TRUE;
+ SET_LEX_STATE(EXPR_BEG);
+ }
+ else {
+ SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
+ }
+ ++p->lex.paren_nest; /* after lambda_beginning_p() */
COND_PUSH(0);
CMDARG_PUSH(0);
- SET_LEX_STATE(c != tLBRACE ? EXPR_BEG : EXPR_BEG|EXPR_LABEL);
- if (c != tLBRACE) p->command_start = TRUE;
return c;
case '\\':