summaryrefslogtreecommitdiff
path: root/tool/mk_builtin_loader.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-14 16:08:33 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-14 16:08:33 +0900
commitb22bfdaa9ad0ae96f79ee75503c85908fa2ec934 (patch)
treeeda3755a800d21c7f9f95df9a04d7a872af86af1 /tool/mk_builtin_loader.rb
parent997133d5959d73663988814704b2e390a75ea718 (diff)
downloadruby-b22bfdaa9ad0ae96f79ee75503c85908fa2ec934.tar.gz
Fixed up rest, keywords, keyword rest and block arguments
Diffstat (limited to 'tool/mk_builtin_loader.rb')
-rw-r--r--tool/mk_builtin_loader.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/tool/mk_builtin_loader.rb b/tool/mk_builtin_loader.rb
index db2224c1de..f28f48f570 100644
--- a/tool/mk_builtin_loader.rb
+++ b/tool/mk_builtin_loader.rb
@@ -53,8 +53,15 @@ def collect_params tree
while tree
case tree.first
when :params
- idents = (tree[1] || []) + (tree[2] || []).map(&:first)
- return idents.map { |ident| ident[1].to_sym }
+ params = []
+ _, mand, opt, rest, post, kwds, kwrest, block = tree
+ mand.each {|_, v| params << v.to_sym} if mand
+ opt.each {|(_, v), | params << v.to_sym} if opt
+ params << rest[1][1].to_sym if rest
+ post.each {|_, v| params << v.to_sym} if post
+ params << kwrest[1][1].to_sym if kwrest
+ params << block[1][1].to_sym if block
+ return params
when :paren
tree = tree[1]
else