Skip to content

Commit ecfb552

Browse files
committed
Auto merge of #12860 - weihanglo:lockfile-max-stable, r=epage
refactor: centralize logic of getting max resolve version
2 parents bf0a90d + 4d80f10 commit ecfb552

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

src/cargo/core/resolver/resolve.rs

+11
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,17 @@ pub enum ResolveVersion {
8888
V4,
8989
}
9090

91+
impl ResolveVersion {
92+
/// The maximum version of lockfile made into the stable channel.
93+
///
94+
/// Any version larger than this needs `-Znext-lockfile-bump` to enable.
95+
///
96+
/// Update this when you're going to stabilize a new lockfile format.
97+
pub fn max_stable() -> ResolveVersion {
98+
ResolveVersion::V3
99+
}
100+
}
101+
91102
impl Resolve {
92103
pub fn new(
93104
graph: Graph<PackageId, HashSet<Dependency>>,

src/cargo/ops/lockfile.rs

+8-9
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,16 @@ pub fn write_pkg_lockfile(ws: &Workspace<'_>, resolve: &mut Resolve) -> CargoRes
6464
// out lock file updates as they're otherwise already updated, and changes
6565
// which don't touch dependencies won't seemingly spuriously update the lock
6666
// file.
67-
if resolve.version() < ResolveVersion::default() {
68-
resolve.set_version(ResolveVersion::default());
67+
let default_version = ResolveVersion::default();
68+
let current_version = resolve.version();
69+
let next_lockfile_bump = ws.config().cli_unstable().next_lockfile_bump;
70+
71+
if current_version < default_version {
72+
resolve.set_version(default_version);
6973
out = serialize_resolve(resolve, orig.as_deref());
70-
} else if resolve.version() > ResolveVersion::default()
71-
&& !ws.config().cli_unstable().next_lockfile_bump
72-
{
74+
} else if current_version > ResolveVersion::max_stable() && !next_lockfile_bump {
7375
// The next version hasn't yet stabilized.
74-
anyhow::bail!(
75-
"lock file version `{:?}` requires `-Znext-lockfile-bump`",
76-
resolve.version()
77-
)
76+
anyhow::bail!("lock file version `{current_version:?}` requires `-Znext-lockfile-bump`")
7877
}
7978

8079
// Ok, if that didn't work just write it out

0 commit comments

Comments
 (0)