mirror of https://github.com/rust-lang/cargo
Have `Edition` know what its default resolver behaviour is
This commit is contained in:
parent
4fd148c47e
commit
76713d962f
|
@ -102,6 +102,7 @@ use anyhow::{bail, Error};
|
|||
use cargo_util::ProcessBuilder;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::core::resolver::ResolveBehavior;
|
||||
use crate::util::errors::CargoResult;
|
||||
use crate::util::{indented_lines, iter_join};
|
||||
use crate::Config;
|
||||
|
@ -242,6 +243,14 @@ impl Edition {
|
|||
Edition2021 => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn default_resolve_behavior(&self) -> ResolveBehavior {
|
||||
if *self >= Edition::Edition2021 {
|
||||
ResolveBehavior::V2
|
||||
} else {
|
||||
ResolveBehavior::V1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Edition {
|
||||
|
|
|
@ -16,7 +16,7 @@ use crate::core::features::Features;
|
|||
use crate::core::registry::PackageRegistry;
|
||||
use crate::core::resolver::features::CliFeatures;
|
||||
use crate::core::resolver::ResolveBehavior;
|
||||
use crate::core::{Dependency, Edition, FeatureValue, PackageId, PackageIdSpec};
|
||||
use crate::core::{Dependency, FeatureValue, PackageId, PackageIdSpec};
|
||||
use crate::core::{EitherManifest, Package, SourceId, VirtualManifest};
|
||||
use crate::ops;
|
||||
use crate::sources::{PathSource, CRATES_IO_INDEX, CRATES_IO_REGISTRY};
|
||||
|
@ -287,16 +287,12 @@ impl<'cfg> Workspace<'cfg> {
|
|||
// - If the root package specifies edition 2021, use v2.
|
||||
// - Otherwise, use the default v1.
|
||||
self.resolve_behavior = match self.root_maybe() {
|
||||
MaybePackage::Package(p) => p.manifest().resolve_behavior().or_else(|| {
|
||||
if p.manifest().edition() >= Edition::Edition2021 {
|
||||
Some(ResolveBehavior::V2)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}),
|
||||
MaybePackage::Virtual(vm) => vm.resolve_behavior(),
|
||||
MaybePackage::Package(p) => p
|
||||
.manifest()
|
||||
.resolve_behavior()
|
||||
.unwrap_or_else(|| p.manifest().edition().default_resolve_behavior()),
|
||||
MaybePackage::Virtual(vm) => vm.resolve_behavior().unwrap_or(ResolveBehavior::V1),
|
||||
}
|
||||
.unwrap_or(ResolveBehavior::V1);
|
||||
}
|
||||
|
||||
/// Returns the current package of this workspace.
|
||||
|
|
Loading…
Reference in New Issue