method
unwind_options_for_requirements
ruby latest stable - Class:
Bundler::Molinillo::Resolver::Resolution
Method not available on this version
This method is only available on newer versions. The first available version (v2_6_3) is shown here.
unwind_options_for_requirements(binding_requirements)private
@param [Array array of requirements that
combine to create a conflict @return [Array
of resolving the passed requirements
# File lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb, line 367
def unwind_options_for_requirements(binding_requirements)
unwind_details = []
trees = []
binding_requirements.reverse_each do |r|
partial_tree = [r]
trees << partial_tree
unwind_details << UnwindDetails.new(-1, nil, partial_tree, binding_requirements, trees, [])
# If this requirement has alternative possibilities, check if any would
# satisfy the other requirements that created this conflict
requirement_state = find_state_for(r)
if conflict_fixing_possibilities?(requirement_state, binding_requirements)
unwind_details << UnwindDetails.new(
states.index(requirement_state),
r,
partial_tree,
binding_requirements,
trees,
[]
)
end
# Next, look at the parent of this requirement, and check if the requirement
# could have been avoided if an alternative PossibilitySet had been chosen
parent_r = parent_of(r)
next if parent_r.nil?
partial_tree.unshift(parent_r)
requirement_state = find_state_for(parent_r)
if requirement_state.possibilities.any? { |set| !set.dependencies.include?(r) }
unwind_details << UnwindDetails.new(
states.index(requirement_state),
parent_r,
partial_tree,
binding_requirements,
trees,
[]
)
end
# Finally, look at the grandparent and up of this requirement, looking
# for any possibilities that wouldn't create their parent requirement
grandparent_r = parent_of(parent_r)
until grandparent_r.nil?
partial_tree.unshift(grandparent_r)
requirement_state = find_state_for(grandparent_r)
if requirement_state.possibilities.any? { |set| !set.dependencies.include?(parent_r) }
unwind_details << UnwindDetails.new(
states.index(requirement_state),
grandparent_r,
partial_tree,
binding_requirements,
trees,
[]
)
end
parent_r = grandparent_r
grandparent_r = parent_of(parent_r)
end
end
unwind_details
end Related methods
- Instance methods
- resolve
- Class methods
- new
- Private methods
-
activate_new_spec -
attempt_to_activate -
attempt_to_filter_existing_spec -
binding_requirement_in_set? -
binding_requirements_for_conflict -
build_details_for_unwind -
conflict_fixing_possibilities? -
create_conflict -
debug -
end_resolution -
filter_possibilities_after_unwind -
filter_possibilities_for_parent_unwind -
filter_possibilities_for_primary_unwind -
filtered_possibility_set -
find_state_for -
group_possibilities -
handle_missing_or_push_dependency_state -
indicate_progress -
initial_state -
locked_requirement_named -
locked_requirement_possibility_set -
parent_of -
possibilities_for_requirement -
possibility -
possibility_satisfies_requirements? -
process_topmost_state -
push_state_for_requirements -
raise_error_unless_state -
require_nested_dependencies_for -
requirement_for_existing_name -
requirement_tree_for -
requirement_trees -
resolve_activated_specs -
start_resolution -
state -
unwind_for_conflict -
unwind_options_for_requirements