diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-05-14 22:16:15 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-05-14 22:16:15 +0900 |
commit | 91c004885fc75a93cadf0094fa86ec3bd0ec25f5 (patch) | |
tree | e759ddd8c8c6c116e5fda7ac0b13329aaaa0ea5d | |
parent | bdaa491565e31e3615d5da61551e08c7868db272 (diff) | |
download | ruby-91c004885fc75a93cadf0094fa86ec3bd0ec25f5.tar.gz |
[Bug #19025] Numbered parameter names are always local variables
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 1 |
2 files changed, 2 insertions, 1 deletions
@@ -9749,7 +9749,7 @@ parse_ident(struct parser_params *p, int c, int cmd_state) if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER; if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) && (result == tIDENTIFIER) && /* not EXPR_FNAME, not attrasgn */ - lvar_defined(p, ident)) { + (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) { SET_LEX_STATE(EXPR_END|EXPR_LABEL); } return result; diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 4c0e58cc7b..b920dacc4a 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1672,6 +1672,7 @@ eom } assert_valid_syntax("proc {def foo(_);end;_1}") + assert_valid_syntax("p { [_1 **2] }") end def test_value_expr_in_condition |