-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Closed
Labels
Description
When testing out #7346, I came across a strange case where the resolver panics. I neglected to update every version across multiple packages in a workspace. Below is a fairly minimal reproduction. Notice that it has both =0.1.0 and =0.1.1.
#[cargo_test]
fn patch_eq_conflict_panic() {
Package::new("bar", "0.1.0").publish();
Package::new("bar", "0.1.1").publish();
let p = project()
.file("Cargo.toml",
r#"
[package]
name = "foo"
version = "0.1.0"
[dependencies]
bar = "=0.1.0"
[dev-dependencies]
bar = "=0.1.1"
[patch.crates-io]
bar = {path="bar"}
"#)
.file("src/lib.rs", "")
.file("bar/Cargo.toml", &basic_manifest("bar", "0.1.1"))
.file("bar/src/lib.rs", "")
.build();
p.cargo("generate-lockfile").run();
}Fails with:
thread 'main' panicked at 'not currently active!?', src/libcore/option.rs:1190:5
stack backtrace:
..snip..
15: core::option::Option<T>::expect
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/option.rs:345
16: cargo::core::resolver::generalize_conflicting::{{closure}}
at src/cargo/core/resolver/mod.rs:871
17: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/ops/function.rs:275
18: core::option::Option<T>::map
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/option.rs:447
19: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::next
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/iter/adapters/mod.rs:710
20: core::iter::traits::iterator::fold1
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/iter/traits/iterator.rs:2967
21: core::iter::traits::iterator::Iterator::max_by
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/iter/traits/iterator.rs:2259
22: core::iter::traits::iterator::Iterator::max
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/iter/traits/iterator.rs:2174
23: cargo::core::resolver::generalize_conflicting
at src/cargo/core/resolver/mod.rs:869
24: cargo::core::resolver::activate_deps_loop::{{closure}}
at src/cargo/core/resolver/mod.rs:288
25: core::result::Result<T,E>::or_else
at /rustc/084beb83e0e87d673d5fabc844d28e8e8ae2ab4c/src/libcore/result.rs:761
26: cargo::core::resolver::activate_deps_loop
at src/cargo/core/resolver/mod.rs:257
27: cargo::core::resolver::resolve
at src/cargo/core/resolver/mod.rs:137
28: cargo::ops::resolve::resolve_with_previous
at src/cargo/ops/resolve.rs:338
29: cargo::ops::cargo_generate_lockfile::generate_lockfile
at src/cargo/ops/cargo_generate_lockfile.rs:24
..snip..
I think it should fail with an error like the non-patch version ("failed to select a version for bar").
Currently on latest master f4d1b77
tomusdrw