module Molinillo::Delegates::SpecificationProvider

def allow_missing?(dependency)

(see Molinillo::SpecificationProvider#allow_missing?)
def allow_missing?(dependency)
  with_no_such_dependency_error_handling do
    specification_provider.allow_missing?(dependency)
  end
end

def dependencies_for(specification)

(see Molinillo::SpecificationProvider#dependencies_for)
def dependencies_for(specification)
  with_no_such_dependency_error_handling do
    specification_provider.dependencies_for(specification)
  end
end

def name_for(dependency)

(see Molinillo::SpecificationProvider#name_for)
def name_for(dependency)
  with_no_such_dependency_error_handling do
    specification_provider.name_for(dependency)
  end
end

def name_for_explicit_dependency_source

(see Molinillo::SpecificationProvider#name_for_explicit_dependency_source)
def name_for_explicit_dependency_source
  with_no_such_dependency_error_handling do
    specification_provider.name_for_explicit_dependency_source
  end
end

def name_for_locking_dependency_source

(see Molinillo::SpecificationProvider#name_for_locking_dependency_source)
def name_for_locking_dependency_source
  with_no_such_dependency_error_handling do
    specification_provider.name_for_locking_dependency_source
  end
end

def requirement_satisfied_by?(requirement, activated, spec)

(see Molinillo::SpecificationProvider#requirement_satisfied_by?)
def requirement_satisfied_by?(requirement, activated, spec)
  with_no_such_dependency_error_handling do
    specification_provider.requirement_satisfied_by?(requirement, activated, spec)
  end
end

def search_for(dependency)

(see Molinillo::SpecificationProvider#search_for)
def search_for(dependency)
  with_no_such_dependency_error_handling do
    specification_provider.search_for(dependency)
  end
end

def sort_dependencies(dependencies, activated, conflicts)

(see Molinillo::SpecificationProvider#sort_dependencies)
def sort_dependencies(dependencies, activated, conflicts)
  with_no_such_dependency_error_handling do
    specification_provider.sort_dependencies(dependencies, activated, conflicts)
  end
end

def with_no_such_dependency_error_handling

Other tags:
    Yield: -
def with_no_such_dependency_error_handling
  yield
rescue NoSuchDependencyError => error
  if state
    vertex = activated.vertex_named(name_for(error.dependency))
    error.required_by += vertex.incoming_edges.map { |e| e.origin.name }
    error.required_by << name_for_explicit_dependency_source unless vertex.explicit_requirements.empty?
  end
  raise
end