182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
# File 'lib/solargraph/parser/rubyvm/node_methods.rb', line 182
def get_return_nodes node
return [] unless node.is_a?(RubyVM::AbstractSyntaxTree::Node)
result = []
if REDUCEABLE.include?(node.type)
result.concat get_return_nodes_from_children(node)
elsif CONDITIONAL.include?(node.type)
result.concat reduce_to_value_nodes(node.children[1..-1])
elsif node.type == :RESCUE
result.concat reduce_to_value_nodes([node.children[0]])
result.concat reduce_to_value_nodes(node.children[1..-2])
elsif node.type == :OR
result.concat reduce_to_value_nodes(node.children)
elsif node.type == :RETURN
result.concat reduce_to_value_nodes([node.children[0]])
elsif node.type == :ITER
result.push node
result.concat get_return_nodes_only(node.children[1])
elsif node.type == :CASE
node.children.each do |cc|
result.concat reduce_to_value_nodes(cc.children[1..-1])
end
else
result.push node
end
result
end
|