@@ -983,57 +983,47 @@ fn inner_dependency_inherit_with<'a>(
983983 ) )
984984 }
985985 inherit ( ) ?. get_dependency ( name, package_root) . map ( |ws_dep| {
986- match ws_dep {
987- manifest:: TomlDependency :: Simple ( ws_version) => {
988- if let Some ( false ) = pkg_dep. default_features ( ) {
989- default_features_msg ( name, None , warnings) ;
990- }
991- manifest:: TomlDependency :: Detailed ( manifest:: TomlDetailedDependency {
992- version : Some ( ws_version) ,
993- optional : pkg_dep. optional ,
994- features : pkg_dep. features . clone ( ) ,
995- public : pkg_dep. public ,
996- ..Default :: default ( )
997- } )
986+ let mut merged_dep = match ws_dep {
987+ manifest:: TomlDependency :: Simple ( ws_version) => manifest:: TomlDetailedDependency {
988+ version : Some ( ws_version) ,
989+ ..Default :: default ( )
990+ } ,
991+ manifest:: TomlDependency :: Detailed ( ws_dep) => ws_dep. clone ( ) ,
992+ } ;
993+ match ( pkg_dep. default_features ( ) , merged_dep. default_features ( ) ) {
994+ // member: default-features = true and
995+ // workspace: default-features = false should turn on
996+ // default-features
997+ ( Some ( true ) , Some ( false ) ) => {
998+ merged_dep. default_features = Some ( true ) ;
998999 }
999- manifest:: TomlDependency :: Detailed ( ws_dep) => {
1000- let mut merged_dep = ws_dep. clone ( ) ;
1001- match ( pkg_dep. default_features ( ) , merged_dep. default_features ( ) ) {
1002- // member: default-features = true and
1003- // workspace: default-features = false should turn on
1004- // default-features
1005- ( Some ( true ) , Some ( false ) ) => {
1006- merged_dep. default_features = Some ( true ) ;
1007- }
1008- // member: default-features = false and
1009- // workspace: default-features = true should ignore member
1010- // default-features
1011- ( Some ( false ) , Some ( true ) ) => {
1012- default_features_msg ( name, Some ( true ) , warnings) ;
1013- }
1014- // member: default-features = false and
1015- // workspace: dep = "1.0" should ignore member default-features
1016- ( Some ( false ) , None ) => {
1017- default_features_msg ( name, None , warnings) ;
1018- }
1019- _ => { }
1020- }
1021- merged_dep. features = match ( merged_dep. features . clone ( ) , pkg_dep. features . clone ( ) )
1022- {
1023- ( Some ( dep_feat) , Some ( inherit_feat) ) => Some (
1024- dep_feat
1025- . into_iter ( )
1026- . chain ( inherit_feat)
1027- . collect :: < Vec < String > > ( ) ,
1028- ) ,
1029- ( Some ( dep_fet) , None ) => Some ( dep_fet) ,
1030- ( None , Some ( inherit_feat) ) => Some ( inherit_feat) ,
1031- ( None , None ) => None ,
1032- } ;
1033- merged_dep. optional = pkg_dep. optional ;
1034- manifest:: TomlDependency :: Detailed ( merged_dep)
1000+ // member: default-features = false and
1001+ // workspace: default-features = true should ignore member
1002+ // default-features
1003+ ( Some ( false ) , Some ( true ) ) => {
1004+ default_features_msg ( name, Some ( true ) , warnings) ;
10351005 }
1006+ // member: default-features = false and
1007+ // workspace: dep = "1.0" should ignore member default-features
1008+ ( Some ( false ) , None ) => {
1009+ default_features_msg ( name, None , warnings) ;
1010+ }
1011+ _ => { }
10361012 }
1013+ merged_dep. features = match ( merged_dep. features . clone ( ) , pkg_dep. features . clone ( ) ) {
1014+ ( Some ( dep_feat) , Some ( inherit_feat) ) => Some (
1015+ dep_feat
1016+ . into_iter ( )
1017+ . chain ( inherit_feat)
1018+ . collect :: < Vec < String > > ( ) ,
1019+ ) ,
1020+ ( Some ( dep_fet) , None ) => Some ( dep_fet) ,
1021+ ( None , Some ( inherit_feat) ) => Some ( inherit_feat) ,
1022+ ( None , None ) => None ,
1023+ } ;
1024+ merged_dep. optional = pkg_dep. optional ;
1025+ merged_dep. public = pkg_dep. public ;
1026+ manifest:: TomlDependency :: Detailed ( merged_dep)
10371027 } )
10381028}
10391029
0 commit comments