diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-30 01:40:11 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-30 01:40:11 +0000 |
commit | 22c0994bc8b34e4b8b80de3259363b0f27c24988 (patch) | |
tree | 413fd9516c8791872fb5e4fe76a051baca6b03db /parse.y | |
parent | f7d130f473a291ee1014c763ab4628ac214fd322 (diff) |
parse.y: no warning for lambda
* parse.y (parser_yylex): do not warn parentheses of lambda
argument list, because there is no name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -392,6 +392,8 @@ static int parser_yyerror(struct parser_params*, const char*); #define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL) #define NEW_QCALL(q,r,m,a) NEW_NODE(NODE_CALL_Q(q),r,m,a) +#define lambda_beginning_p() (lpar_beg && lpar_beg == paren_nest) + static int yylex(YYSTYPE*, struct parser_params*); #ifndef RIPPER @@ -7914,7 +7916,7 @@ parse_ident(struct parser_params *parser, int c, int cmd_state) command_start = TRUE; } if (kw->id[0] == keyword_do) { - if (lpar_beg && lpar_beg == paren_nest) { + if (lambda_beginning_p()) { lpar_beg = 0; --paren_nest; return keyword_do_LAMBDA; @@ -8520,7 +8522,7 @@ parser_yylex(struct parser_params *parser) else if (IS_SPCARG(-1)) { c = tLPAREN_ARG; } - else if (IS_lex_state(EXPR_ENDFN) && space_seen) { + else if (IS_lex_state(EXPR_ENDFN) && space_seen && !lambda_beginning_p()) { rb_warning0("parentheses after method name is interpreted as"); rb_warning0("an argument list, not a decomposed argument"); } @@ -8558,7 +8560,7 @@ parser_yylex(struct parser_params *parser) case '{': ++brace_nest; - if (lpar_beg && lpar_beg == paren_nest) { + if (lambda_beginning_p()) { SET_LEX_STATE(EXPR_BEG); lpar_beg = 0; --paren_nest; |