class Spoom::Deadcode::Plugins::Ruby

def on_send(indexer, send)

def on_send(indexer, send)
  case send.name
  when "const_defined?", "const_get", "const_source_location"
    reference_symbol_as_constant(indexer, send, T.must(send.args.first))
  when "send", "__send__", "try"
    arg = send.args.first
    indexer.reference_method(indexer.node_string(arg.value), send.node) if arg.is_a?(SyntaxTree::SymbolLiteral)
  when "alias_method"
    last_arg = send.args.last
    name = case last_arg
    when SyntaxTree::SymbolLiteral
      indexer.node_string(last_arg.value)
    when SyntaxTree::StringLiteral
      last_arg.parts.map { |part| indexer.node_string(part) }.join
    end
    return unless name
    indexer.reference_method(name, send.node)
  end
end

def reference_symbol_as_constant(indexer, send, node)

def reference_symbol_as_constant(indexer, send, node)
  case node
  when SyntaxTree::SymbolLiteral
    name = indexer.node_string(node.value)
    indexer.reference_constant(name, send.node)
  when SyntaxTree::StringLiteral
    string = T.must(indexer.node_string(node)[1..-2])
    string.split("::").each do |name|
      indexer.reference_constant(name, send.node) unless name.empty?
    end
  end
end