module RuboCop::Cop::Utils::Parser
Public Class Methods
explicit_returns(node)
click to toggle source
# File lib/rubocop/cop/betterment/utils/parser.rb, line 61 def self.explicit_returns(node) node.descendants.select(&:return_type?).map { |x| x&.children&.first }.compact end
get_return_values(node)
click to toggle source
# File lib/rubocop/cop/betterment/utils/parser.rb, line 33 def self.get_return_values(node) # rubocop:disable Metrics/AbcSize return [] unless node return explicit_returns(node) + get_return_values(node.body) if node.def_type? return [node] if node.literal? || node.variable? case node.type when :begin get_return_values(node.children.last) when :block get_return_values(node.body) when :if if_rets = get_return_values(node.if_branch) else_rets = get_return_values(node.else_branch) if_rets + else_rets when :case cases = [] node.each_when do |block| cases += get_return_values(block.body) end cases + get_return_values(node.else_branch) when :send [node] else [] end end
get_root_token(node)
click to toggle source
# File lib/rubocop/cop/betterment/utils/parser.rb, line 5 def self.get_root_token(node) # rubocop:disable Metrics/PerceivedComplexity, Metrics/AbcSize, Metrics/CyclomaticComplexity return nil unless node return get_root_token(node.receiver) if node.receiver if node.send_type? name = node.method_name elsif node.variable? name, = *node elsif node.literal? _, name = *node elsif node.const_type? name = node.const_name.to_sym elsif node.sym_type? name = node.value elsif node.variable? name = node.children[0] elsif node.self_type? name = :self elsif node.block_pass_type? name, = *node.children else name = nil end name end