Skip to content

Commit 58801a8

Browse files
committed
refactor(toml): Group Edition validation
1 parent 1d3d4a7 commit 58801a8

File tree

1 file changed

+25
-26
lines changed

1 file changed

+25
-26
lines changed

src/cargo/util/toml/mod.rs

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -563,11 +563,36 @@ pub fn to_real_manifest(
563563
source_id,
564564
);
565565

566+
let rust_version = if let Some(rust_version) = &package.rust_version {
567+
let rust_version = field_inherit_with(rust_version.clone(), "rust_version", || {
568+
inherit()?.rust_version()
569+
})?;
570+
Some(rust_version)
571+
} else {
572+
None
573+
};
574+
566575
let edition = if let Some(edition) = package.edition.clone() {
567576
let edition: Edition = field_inherit_with(edition, "edition", || inherit()?.edition())?
568577
.parse()
569578
.with_context(|| "failed to parse the `edition` key")?;
570579
package.edition = Some(manifest::InheritableField::Value(edition.to_string()));
580+
if let Some(rust_version) = &rust_version {
581+
let req = rust_version.to_caret_req();
582+
if let Some(first_version) = edition.first_version() {
583+
let unsupported =
584+
semver::Version::new(first_version.major, first_version.minor - 1, 9999);
585+
if req.matches(&unsupported) {
586+
bail!(
587+
"rust-version {} is older than first version ({}) required by \
588+
the specified edition ({})",
589+
rust_version,
590+
first_version,
591+
edition,
592+
)
593+
}
594+
}
595+
}
571596
edition
572597
} else {
573598
warnings.push(format!(
@@ -593,32 +618,6 @@ pub fn to_real_manifest(
593618
)));
594619
}
595620

596-
let rust_version = if let Some(rust_version) = &package.rust_version {
597-
let rust_version = field_inherit_with(rust_version.clone(), "rust_version", || {
598-
inherit()?.rust_version()
599-
})?;
600-
Some(rust_version)
601-
} else {
602-
None
603-
};
604-
605-
if let Some(rust_version) = &rust_version {
606-
let req = rust_version.to_caret_req();
607-
if let Some(first_version) = edition.first_version() {
608-
let unsupported =
609-
semver::Version::new(first_version.major, first_version.minor - 1, 9999);
610-
if req.matches(&unsupported) {
611-
bail!(
612-
"rust-version {} is older than first version ({}) required by \
613-
the specified edition ({})",
614-
rust_version,
615-
first_version,
616-
edition,
617-
)
618-
}
619-
}
620-
}
621-
622621
if package.metabuild.is_some() {
623622
features.require(Feature::metabuild())?;
624623
}

0 commit comments

Comments
 (0)