mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Make args info for RubyVM::AST to available on endless method without parens
Problem === Arguments information is missing for endless method without parens. For example: ```ruby # ok pp RubyVM::AbstractSyntaxTree.parse(<<~RUBY).children[2] def x() = 42 RUBY # => (DEFN@1:0-1:12 # mid: :x # body: # (SCOPE@1:0-1:12 # tbl: [] # args: # (ARGS@1:5-1:6 # pre_num: 0 # pre_init: nil # opt: nil # first_post: nil # post_num: 0 # post_init: nil # rest: nil # kw: nil # kwrest: nil # block: nil) # body: (LIT@1:10-1:12 42))) # ok pp RubyVM::AbstractSyntaxTree.parse(<<~RUBY).children[2] def x() 42 end RUBY # => (DEFN@1:0-1:14 # mid: :x # body: # (SCOPE@1:0-1:14 # tbl: [] # args: # (ARGS@1:5-1:6 # pre_num: 0 # pre_init: nil # opt: nil # first_post: nil # post_num: 0 # post_init: nil # rest: nil # kw: nil # kwrest: nil # block: nil) # body: (LIT@1:8-1:10 42))) # It has a problem, the `args` is nil pp RubyVM::AbstractSyntaxTree.parse(<<~RUBY).children[2] def x = 42 RUBY # => (DEFN@1:0-1:10 # mid: :x # body: (SCOPE@1:0-1:10 tbl: [] args: nil body: (LIT@1:8-1:10 42))) ``` It causes an error if a program expects `args` node exists. For example: https://github.com/ruby/rbs/issues/551 Solution ==== Call `new_args` on this case.
This commit is contained in:
parent
3d7f71801a
commit
de5f8a92d5
Notes:
git
2021-01-01 14:25:37 +09:00
Merged: https://github.com/ruby/ruby/pull/4016 Merged-By: nobu <nobu@ruby-lang.org>
1 changed files with 7 additions and 1 deletions
8
parse.y
8
parse.y
|
@ -5003,7 +5003,13 @@ superclass : '<'
|
|||
}
|
||||
;
|
||||
|
||||
f_opt_paren_args: f_paren_args | none;
|
||||
f_opt_paren_args: f_paren_args
|
||||
| none
|
||||
{
|
||||
$$ = new_args_tail(p, Qnone, Qnone, Qnone, &@0);
|
||||
$$ = new_args(p, Qnone, Qnone, Qnone, Qnone, $$, &@0);
|
||||
}
|
||||
;
|
||||
|
||||
f_paren_args : '(' f_args rparen
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue