summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y6
-rw-r--r--test/ruby/test_syntax.rb3
-rw-r--r--version.h2
3 files changed, 7 insertions, 4 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;
}
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index 53036cab3b..39ad8875a0 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -1632,6 +1632,9 @@ eom
assert_raise(NameError) {eval("_1")},
]
}
+
+ assert_valid_syntax("proc {def foo(_);end;_1}")
+ assert_valid_syntax("p { [_1 **2] }")
end
def test_value_expr_in_condition
diff --git a/version.h b/version.h
index cdb24afd0f..c7d897d8d3 100644
--- a/version.h
+++ b/version.h
@@ -11,7 +11,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 4
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 236
+#define RUBY_PATCHLEVEL 237
#define RUBY_RELEASE_YEAR 2023
#define RUBY_RELEASE_MONTH 7