@@ -563,11 +563,36 @@ pub fn to_real_manifest(
563
563
source_id,
564
564
) ;
565
565
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
+
566
575
let edition = if let Some ( edition) = package. edition . clone ( ) {
567
576
let edition: Edition = field_inherit_with ( edition, "edition" , || inherit ( ) ?. edition ( ) ) ?
568
577
. parse ( )
569
578
. with_context ( || "failed to parse the `edition` key" ) ?;
570
579
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
+ }
571
596
edition
572
597
} else {
573
598
warnings. push ( format ! (
@@ -593,32 +618,6 @@ pub fn to_real_manifest(
593
618
) ) ) ;
594
619
}
595
620
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
-
622
621
if package. metabuild . is_some ( ) {
623
622
features. require ( Feature :: metabuild ( ) ) ?;
624
623
}
0 commit comments