summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorU.Nakamura <usa@ruby-lang.org>2023-07-25 20:53:43 +0900
committerU.Nakamura <usa@ruby-lang.org>2023-07-25 20:53:43 +0900
commite55dde3bdddbc595be12e7184a23e729647eb989 (patch)
tree06dc9dea6c3a6dfa81d5b6ebcea87632cc4b4819 /parse.y
parentaac3232ab09f649c5de86a1ef7b942de3cc218ce (diff)
merge revision(s) 91c004885fc75a93cadf0094fa86ec3bd0ec25f5: [Backport #19025]
[Bug #19025] Numbered parameter names are always local variables --- parse.y | 2 +- test/ruby/test_syntax.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-)
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y6
1 files changed, 3 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index 11b158954d..ab61f5378d 100644
--- a/parse.y
+++ b/parse.y
@@ -9241,9 +9241,9 @@ parse_ident(struct parser_params *p, int c, int cmd_state)
ident = tokenize_ident(p, last_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)) {
- SET_LEX_STATE(EXPR_END|EXPR_LABEL);
+ (result == tIDENTIFIER) && /* not EXPR_FNAME, not attrasgn */
+ (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
+ SET_LEX_STATE(EXPR_END|EXPR_LABEL);
}
return result;
}