class Bundler::SpecSet
def for(dependencies, check = false, platforms = [nil])
def for(dependencies, check = false, platforms = [nil]) handled = ["bundler"].product(platforms).map {|k| [k, true] }.to_h deps = dependencies.product(platforms) specs = [] loop do break unless dep = deps.shift name = dep[0].name platform = dep[1] incomplete = false key = [name, platform] next if handled.key?(key) handled[key] = true specs_for_dep = specs_for_dependency(*dep) if specs_for_dep.any? specs.concat(specs_for_dep) specs_for_dep.first.dependencies.each do |d| next if d.type == :development incomplete = true if d.name != "bundler" && lookup[d.name].nil? deps << [d, dep[1]] end else incomplete = true end if incomplete && check @incomplete_specs += lookup[name] || [LazySpecification.new(name, nil, nil)] end end specs.uniq end