@@ -87,7 +87,7 @@ pub struct Workspace<'cfg> {
8787 ignore_lock : bool ,
8888
8989 /// The resolver behavior specified with the `resolver` field.
90- resolve_behavior : ResolveBehavior ,
90+ resolve_behavior : Option < ResolveBehavior > ,
9191}
9292
9393// Separate structure for tracking loaded packages (to avoid loading anything
@@ -150,8 +150,7 @@ impl<'cfg> Workspace<'cfg> {
150150 ws. resolve_behavior = match ws. root_maybe ( ) {
151151 MaybePackage :: Package ( p) => p. manifest ( ) . resolve_behavior ( ) ,
152152 MaybePackage :: Virtual ( vm) => vm. resolve_behavior ( ) ,
153- }
154- . unwrap_or ( ResolveBehavior :: V1 ) ;
153+ } ;
155154 ws. validate ( ) ?;
156155 Ok ( ws)
157156 }
@@ -173,7 +172,7 @@ impl<'cfg> Workspace<'cfg> {
173172 require_optional_deps : true ,
174173 loaded_packages : RefCell :: new ( HashMap :: new ( ) ) ,
175174 ignore_lock : false ,
176- resolve_behavior : ResolveBehavior :: V1 ,
175+ resolve_behavior : None ,
177176 }
178177 }
179178
@@ -186,7 +185,7 @@ impl<'cfg> Workspace<'cfg> {
186185 let mut ws = Workspace :: new_default ( current_manifest, config) ;
187186 ws. root_manifest = Some ( root_path. join ( "Cargo.toml" ) ) ;
188187 ws. target_dir = config. target_dir ( ) ?;
189- ws. resolve_behavior = manifest. resolve_behavior ( ) . unwrap_or ( ResolveBehavior :: V1 ) ;
188+ ws. resolve_behavior = manifest. resolve_behavior ( ) ;
190189 ws. packages
191190 . packages
192191 . insert ( root_path, MaybePackage :: Virtual ( manifest) ) ;
@@ -214,10 +213,7 @@ impl<'cfg> Workspace<'cfg> {
214213 let mut ws = Workspace :: new_default ( package. manifest_path ( ) . to_path_buf ( ) , config) ;
215214 ws. is_ephemeral = true ;
216215 ws. require_optional_deps = require_optional_deps;
217- ws. resolve_behavior = package
218- . manifest ( )
219- . resolve_behavior ( )
220- . unwrap_or ( ResolveBehavior :: V1 ) ;
216+ ws. resolve_behavior = package. manifest ( ) . resolve_behavior ( ) ;
221217 let key = ws. current_manifest . parent ( ) . unwrap ( ) ;
222218 let id = package. package_id ( ) ;
223219 let package = MaybePackage :: Package ( package) ;
@@ -594,7 +590,7 @@ impl<'cfg> Workspace<'cfg> {
594590 }
595591
596592 pub fn resolve_behavior ( & self ) -> ResolveBehavior {
597- self . resolve_behavior
593+ self . resolve_behavior . unwrap_or ( ResolveBehavior :: V1 )
598594 }
599595
600596 pub fn allows_unstable_package_features ( & self ) -> bool {
@@ -796,11 +792,9 @@ impl<'cfg> Workspace<'cfg> {
796792 if !manifest. patch ( ) . is_empty ( ) {
797793 emit_warning ( "patch" ) ?;
798794 }
799- if let Some ( behavior ) = manifest . resolve_behavior ( ) {
795+ if manifest . resolve_behavior ( ) != self . resolve_behavior {
800796 // Only warn if they don't match.
801- if behavior != self . resolve_behavior {
802- emit_warning ( "resolver" ) ?;
803- }
797+ emit_warning ( "resolver" ) ?;
804798 }
805799 }
806800 }
0 commit comments