class Solargraph::Pin::DelegatedMethod
def resolve_method api_map
-
(Pin::Method, nil)
-
Parameters:
-
api_map
(ApiMap
) --
def resolve_method api_map return if @resolved_method resolver = @receiver_chain.define(api_map, self, []).first unless resolver Solargraph.logger.warn \ "Delegated receiver for #{path} was resolved to nil from `#{print_chain(@receiver_chain)}'" return end receiver_type = resolver.return_type return if receiver_type.undefined? receiver_path, method_scope = if @receiver_chain.constant? # HACK: the `return_type` of a constant is Class<Whatever>, but looking up a method expects # the arguments `"Whatever"` and `scope: :class`. [receiver_type.to_s.sub(/^Class<(.+)>$/, '\1'), :class] else [receiver_type.to_s, :instance] end method_stack = api_map.get_method_stack(receiver_path, @receiver_method_name, scope: method_scope) @resolved_method = method_stack.first end