@@ -108,13 +108,19 @@ def initialize(raw_decl, raw_type_params, raw_block, lenv)
108108 param = raw_decl . type . rest_positionals
109109 @rest_positionals = param ? AST . create_rbs_type ( param . type , lenv ) : nil
110110
111- @req_keywords = raw_decl . type . required_keywords . to_h do |key , ty |
111+ @req_keyword_keys = [ ]
112+ @req_keyword_values = [ ]
113+ raw_decl . type . required_keywords . each do |key , ty |
112114 raise "unsupported argument type: #{ ty . class } " if !ty . is_a? ( RBS ::Types ::Function ::Param )
113- [ key , AST . create_rbs_type ( ty . type , lenv ) ]
115+ @req_keyword_keys << key
116+ @req_keyword_values << AST . create_rbs_type ( ty . type , lenv )
114117 end
115- @opt_keywords = raw_decl . type . optional_keywords . to_h do |key , ty |
118+ @opt_keyword_keys = [ ]
119+ @opt_keyword_values = [ ]
120+ raw_decl . type . optional_keywords . each do |key , ty |
116121 raise "unsupported argument type: #{ ty . class } " if !ty . is_a? ( RBS ::Types ::Function ::Param )
117- [ key , AST . create_rbs_type ( ty . type , lenv ) ]
122+ @opt_keyword_keys << key
123+ @opt_keyword_values << AST . create_rbs_type ( ty . type , lenv )
118124 end
119125 param = raw_decl . type . rest_keywords
120126 @rest_keywords = param ? AST . create_rbs_type ( param . type , lenv ) : nil
@@ -124,8 +130,10 @@ def initialize(raw_decl, raw_type_params, raw_block, lenv)
124130 @post_positionals = [ ]
125131 @opt_positionals = [ ]
126132 @rest_positionals = SigTyBaseAnyNode . new ( raw_decl , lenv )
127- @req_keywords = { }
128- @opt_keywords = { }
133+ @req_keyword_keys = [ ]
134+ @req_keyword_values = [ ]
135+ @opt_keyword_keys = [ ]
136+ @opt_keyword_values = [ ]
129137 @rest_keywords = nil
130138 end
131139
@@ -137,8 +145,10 @@ def initialize(raw_decl, raw_type_params, raw_block, lenv)
137145 attr_reader :post_positionals
138146 attr_reader :opt_positionals
139147 attr_reader :rest_positionals
140- attr_reader :req_keywords
141- attr_reader :opt_keywords
148+ attr_reader :req_keyword_keys
149+ attr_reader :req_keyword_values
150+ attr_reader :opt_keyword_keys
151+ attr_reader :opt_keyword_values
142152 attr_reader :rest_keywords
143153 attr_reader :return_type
144154
@@ -148,12 +158,17 @@ def subnodes = {
148158 post_positionals :,
149159 opt_positionals :,
150160 rest_positionals :,
151- req_keywords :,
152- opt_keywords :,
161+ req_keyword_values :,
162+ opt_keyword_values :,
153163 rest_keywords :,
154164 return_type :,
155165 }
156- def attrs = { type_params :, block_required : }
166+ def attrs = {
167+ type_params :,
168+ req_keyword_keys :,
169+ opt_keyword_keys :,
170+ block_required :,
171+ }
157172 end
158173
159174 class SigTyNode < Node
0 commit comments