@@ -275,11 +275,21 @@ fn normalize_toml(
275275 warnings : & mut Vec < String > ,
276276 errors : & mut Vec < String > ,
277277) -> CargoResult < manifest:: TomlManifest > {
278+ let package_root = manifest_file. parent ( ) . unwrap ( ) ;
279+
280+ let inherit_cell: LazyCell < InheritableFields > = LazyCell :: new ( ) ;
281+ let inherit = || {
282+ inherit_cell
283+ . try_borrow_with ( || load_inheritable_fields ( gctx, manifest_file, & workspace_config) )
284+ } ;
285+ let workspace_root = || inherit ( ) . map ( |fields| fields. ws_root ( ) . as_path ( ) ) ;
286+
278287 let mut normalized_toml = manifest:: TomlManifest {
279288 cargo_features : original_toml. cargo_features . clone ( ) ,
280289 package : None ,
281290 project : None ,
282- profile : original_toml. profile . clone ( ) ,
291+ badges : None ,
292+ features : None ,
283293 lib : None ,
284294 bin : None ,
285295 example : None ,
@@ -290,25 +300,20 @@ fn normalize_toml(
290300 dev_dependencies2 : None ,
291301 build_dependencies : None ,
292302 build_dependencies2 : None ,
293- features : None ,
294303 target : None ,
295- replace : original_toml. replace . clone ( ) ,
296- patch : None ,
297- workspace : original_toml. workspace . clone ( ) ,
298- badges : None ,
299304 lints : None ,
305+ workspace : original_toml. workspace . clone ( ) ,
306+ profile : original_toml. profile . clone ( ) ,
307+ patch : normalize_patch (
308+ gctx,
309+ original_toml. patch . as_ref ( ) ,
310+ & workspace_root,
311+ features,
312+ ) ?,
313+ replace : original_toml. replace . clone ( ) ,
300314 _unused_keys : Default :: default ( ) ,
301315 } ;
302316
303- let package_root = manifest_file. parent ( ) . unwrap ( ) ;
304-
305- let inherit_cell: LazyCell < InheritableFields > = LazyCell :: new ( ) ;
306- let inherit = || {
307- inherit_cell
308- . try_borrow_with ( || load_inheritable_fields ( gctx, manifest_file, & workspace_config) )
309- } ;
310- let workspace_root = || inherit ( ) . map ( |fields| fields. ws_root ( ) . as_path ( ) ) ;
311-
312317 if let Some ( original_package) = original_toml. package ( ) {
313318 let package_name = & original_package. name ;
314319
@@ -483,13 +488,6 @@ fn normalize_toml(
483488 }
484489 normalized_toml. target = ( !normalized_target. is_empty ( ) ) . then_some ( normalized_target) ;
485490
486- normalized_toml. patch = normalize_patch (
487- gctx,
488- original_toml. patch . as_ref ( ) ,
489- & workspace_root,
490- features,
491- ) ?;
492-
493491 let normalized_lints = original_toml
494492 . lints
495493 . clone ( )
@@ -1733,14 +1731,14 @@ fn to_virtual_manifest(
17331731 root,
17341732 } ;
17351733 (
1736- replace ( & original_toml , & mut manifest_ctx) ?,
1737- patch ( & original_toml , & mut manifest_ctx) ?,
1734+ replace ( & normalized_toml , & mut manifest_ctx) ?,
1735+ patch ( & normalized_toml , & mut manifest_ctx) ?,
17381736 )
17391737 } ;
1740- if let Some ( profiles) = & original_toml . profile {
1738+ if let Some ( profiles) = & normalized_toml . profile {
17411739 validate_profiles ( profiles, gctx. cli_unstable ( ) , & features, warnings) ?;
17421740 }
1743- let resolve_behavior = original_toml
1741+ let resolve_behavior = normalized_toml
17441742 . workspace
17451743 . as_ref ( )
17461744 . and_then ( |ws| ws. resolver . as_deref ( ) )
@@ -2820,9 +2818,11 @@ fn prepare_toml_for_publish(
28202818
28212819 let all = |_d : & manifest:: TomlDependency | true ;
28222820 let mut manifest = manifest:: TomlManifest {
2821+ cargo_features : me. cargo_features . clone ( ) ,
28232822 package : Some ( package) ,
28242823 project : None ,
2825- profile : me. profile . clone ( ) ,
2824+ badges : me. badges . clone ( ) ,
2825+ features : me. features . clone ( ) ,
28262826 lib,
28272827 bin,
28282828 example,
@@ -2837,7 +2837,6 @@ fn prepare_toml_for_publish(
28372837 dev_dependencies2 : None ,
28382838 build_dependencies : map_deps ( gctx, me. build_dependencies ( ) , all) ?,
28392839 build_dependencies2 : None ,
2840- features : me. features . clone ( ) ,
28412840 target : match me. target . as_ref ( ) . map ( |target_map| {
28422841 target_map
28432842 . iter ( )
@@ -2863,12 +2862,11 @@ fn prepare_toml_for_publish(
28632862 Some ( Err ( e) ) => return Err ( e) ,
28642863 None => None ,
28652864 } ,
2866- replace : None ,
2867- patch : None ,
2868- workspace : None ,
2869- badges : me. badges . clone ( ) ,
2870- cargo_features : me. cargo_features . clone ( ) ,
28712865 lints : me. lints . clone ( ) ,
2866+ workspace : None ,
2867+ profile : me. profile . clone ( ) ,
2868+ patch : None ,
2869+ replace : None ,
28722870 _unused_keys : Default :: default ( ) ,
28732871 } ;
28742872 strip_features ( & mut manifest) ;
0 commit comments