class RuboCop::Cop::Lint::DuplicateMethods

def lookup_constant(node, const_name)

def lookup_constant(node, const_name)
  # this method is quite imperfect and can be fooled
  # to do much better, we would need to do global analysis of the whole
  # codebase
  node.each_ancestor(:class, :module, :casgn) do |ancestor|
    namespace, mod_name = *ancestor.defined_module
    loop do
      if mod_name == const_name
        return qualified_name(ancestor.parent_module_name,
                              namespace,
                              mod_name)
      end
      break if namespace.nil?
      namespace, mod_name = *namespace
    end
  end
end