228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
# File 'lib/solargraph/parser/legacy/node_methods.rb', line 228
def get_return_nodes node
return [] unless node.is_a?(::Parser::AST::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 == :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 == :block
result.push node
result.concat get_return_nodes_only(node.children[2])
elsif node.type == :case
node.children[1..-1].each do |cc|
if cc.nil?
result.push NIL_NODE
elsif cc.type == :when
result.concat reduce_to_value_nodes([cc.children.last])
else
result.concat reduce_to_value_nodes([cc])
end
end
else
result.push node
end
result
end
|