@@ -87,11 +87,19 @@ pub struct FixOptions {
8787 pub broken_code : bool ,
8888}
8989
90- pub fn fix ( ws : & Workspace < ' _ > , opts : & mut FixOptions ) -> CargoResult < ( ) > {
91- check_version_control ( ws. gctx ( ) , opts) ?;
90+ pub fn fix (
91+ gctx : & GlobalContext ,
92+ original_ws : & Workspace < ' _ > ,
93+ root_manifest : & Path ,
94+ opts : & mut FixOptions ,
95+ ) -> CargoResult < ( ) > {
96+ check_version_control ( gctx, opts) ?;
97+
9298 if opts. edition {
93- check_resolver_change ( ws , opts) ?;
99+ check_resolver_change ( & original_ws , opts) ?;
94100 }
101+ let mut ws = Workspace :: new ( & root_manifest, gctx) ?;
102+ ws. set_honor_rust_version ( original_ws. honor_rust_version ( ) ) ;
95103
96104 // Spin up our lock server, which our subprocesses will use to synchronize fixes.
97105 let lock_server = LockServer :: new ( ) ?;
@@ -128,7 +136,7 @@ pub fn fix(ws: &Workspace<'_>, opts: &mut FixOptions) -> CargoResult<()> {
128136 server. configure ( & mut wrapper) ;
129137 }
130138
131- let rustc = ws. gctx ( ) . load_global_rustc ( Some ( ws) ) ?;
139+ let rustc = ws. gctx ( ) . load_global_rustc ( Some ( & ws) ) ?;
132140 wrapper. arg ( & rustc. path ) ;
133141 // This is calling rustc in cargo fix-proxy-mode, so it also need to retry.
134142 // The argfile handling are located at `FixArgs::from_args`.
@@ -138,7 +146,7 @@ pub fn fix(ws: &Workspace<'_>, opts: &mut FixOptions) -> CargoResult<()> {
138146 // repeating build until there are no more changes to be applied
139147 opts. compile_opts . build_config . primary_unit_rustc = Some ( wrapper) ;
140148
141- ops:: compile ( ws, & opts. compile_opts ) ?;
149+ ops:: compile ( & ws, & opts. compile_opts ) ?;
142150 Ok ( ( ) )
143151}
144152
0 commit comments