Skip to content

Commit 323d7a8

Browse files
committed
Put default ResolveBehavior in one place.
1 parent 787e75b commit 323d7a8

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

src/cargo/core/workspace.rs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pub struct Workspace<'cfg> {
8787
ignore_lock: bool,
8888

8989
/// The resolver behavior specified with the `resolver` field.
90-
resolve_behavior: ResolveBehavior,
90+
resolve_behavior: Option<ResolveBehavior>,
9191
}
9292

9393
// Separate structure for tracking loaded packages (to avoid loading anything
@@ -150,8 +150,7 @@ impl<'cfg> Workspace<'cfg> {
150150
ws.resolve_behavior = match ws.root_maybe() {
151151
MaybePackage::Package(p) => p.manifest().resolve_behavior(),
152152
MaybePackage::Virtual(vm) => vm.resolve_behavior(),
153-
}
154-
.unwrap_or(ResolveBehavior::V1);
153+
};
155154
ws.validate()?;
156155
Ok(ws)
157156
}
@@ -173,7 +172,7 @@ impl<'cfg> Workspace<'cfg> {
173172
require_optional_deps: true,
174173
loaded_packages: RefCell::new(HashMap::new()),
175174
ignore_lock: false,
176-
resolve_behavior: ResolveBehavior::V1,
175+
resolve_behavior: None,
177176
}
178177
}
179178

@@ -186,7 +185,7 @@ impl<'cfg> Workspace<'cfg> {
186185
let mut ws = Workspace::new_default(current_manifest, config);
187186
ws.root_manifest = Some(root_path.join("Cargo.toml"));
188187
ws.target_dir = config.target_dir()?;
189-
ws.resolve_behavior = manifest.resolve_behavior().unwrap_or(ResolveBehavior::V1);
188+
ws.resolve_behavior = manifest.resolve_behavior();
190189
ws.packages
191190
.packages
192191
.insert(root_path, MaybePackage::Virtual(manifest));
@@ -214,10 +213,7 @@ impl<'cfg> Workspace<'cfg> {
214213
let mut ws = Workspace::new_default(package.manifest_path().to_path_buf(), config);
215214
ws.is_ephemeral = true;
216215
ws.require_optional_deps = require_optional_deps;
217-
ws.resolve_behavior = package
218-
.manifest()
219-
.resolve_behavior()
220-
.unwrap_or(ResolveBehavior::V1);
216+
ws.resolve_behavior = package.manifest().resolve_behavior();
221217
let key = ws.current_manifest.parent().unwrap();
222218
let id = package.package_id();
223219
let package = MaybePackage::Package(package);
@@ -594,7 +590,7 @@ impl<'cfg> Workspace<'cfg> {
594590
}
595591

596592
pub fn resolve_behavior(&self) -> ResolveBehavior {
597-
self.resolve_behavior
593+
self.resolve_behavior.unwrap_or(ResolveBehavior::V1)
598594
}
599595

600596
pub fn allows_unstable_package_features(&self) -> bool {
@@ -796,11 +792,9 @@ impl<'cfg> Workspace<'cfg> {
796792
if !manifest.patch().is_empty() {
797793
emit_warning("patch")?;
798794
}
799-
if let Some(behavior) = manifest.resolve_behavior() {
795+
if manifest.resolve_behavior() != self.resolve_behavior {
800796
// Only warn if they don't match.
801-
if behavior != self.resolve_behavior {
802-
emit_warning("resolver")?;
803-
}
797+
emit_warning("resolver")?;
804798
}
805799
}
806800
}

0 commit comments

Comments
 (0)