diff options
| author | tompng <tomoyapenguin@gmail.com> | 2024-09-28 13:15:29 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu.nakada@gmail.com> | 2024-09-28 22:37:44 +0900 |
| commit | b9e225fcbfd045e65f1a95bcef16d97cbfb97287 (patch) | |
| tree | 27bb6888e4ea433d50b80ec7740b90ad09e5cb83 | |
| parent | 8f678d69895d8b0562a52925a1840b698e021f56 (diff) | |
Allow dot3 in defs singleton
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/11716
| -rw-r--r-- | parse.y | 9 | ||||
| -rw-r--r-- | test/ruby/test_syntax.rb | 2 |
2 files changed, 9 insertions, 2 deletions
@@ -3426,7 +3426,6 @@ defn_head : k_def def_name defs_head : k_def singleton dot_or_colon { SET_LEX_STATE(EXPR_FNAME); - p->ctxt.in_argdef = 1; } def_name { @@ -6746,8 +6745,14 @@ singleton : var_ref value_expr($1); $$ = $1; } - | '(' {SET_LEX_STATE(EXPR_BEG);} expr rparen + | '(' + { + SET_LEX_STATE(EXPR_BEG); + p->ctxt.in_argdef = 0; + } + expr rparen { + p->ctxt.in_argdef = 1; NODE *expr = last_expr_node($3); switch (nd_type(expr)) { case NODE_STR: diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 5c341a69b7..3ea6932b9c 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1968,6 +1968,8 @@ eom assert_valid_syntax("def foo b = 1, ...; bar(...); end") assert_valid_syntax("(def foo ...\n bar(...)\nend)") assert_valid_syntax("(def foo ...; bar(...); end)") + assert_valid_syntax("def (1...).foo ...; bar(...); end") + assert_valid_syntax("def (tap{1...}).foo ...; bar(...); end") assert_valid_syntax('def ==(...) end') assert_valid_syntax('def [](...) end') assert_valid_syntax('def nil(...) end') |
