@@ -194,8 +194,7 @@ impl GlobalState {
194
194
format_to ! ( message, "{e}" ) ;
195
195
} ) ;
196
196
197
- let proc_macro_clients =
198
- self . proc_macro_clients . iter ( ) . map ( Some ) . chain ( iter:: repeat_with ( || None ) ) ;
197
+ let proc_macro_clients = self . proc_macro_clients . iter ( ) . chain ( iter:: repeat ( & None ) ) ;
199
198
200
199
for ( ws, proc_macro_client) in self . workspaces . iter ( ) . zip ( proc_macro_clients) {
201
200
if let ProjectWorkspaceKind :: Cargo { error : Some ( error) , .. }
@@ -252,7 +251,8 @@ impl GlobalState {
252
251
message. push_str ( "\n \n " ) ;
253
252
}
254
253
}
255
- _ => ( ) ,
254
+ // sysroot was explicitly not set so we didn't discover a server
255
+ None => { }
256
256
}
257
257
}
258
258
}
@@ -419,14 +419,11 @@ impl GlobalState {
419
419
} ;
420
420
421
421
let mut builder = ProcMacrosBuilder :: default ( ) ;
422
- let proc_macro_clients = proc_macro_clients
423
- . iter ( )
424
- . map ( |res| res. as_ref ( ) . map_err ( |e| e. to_string ( ) ) )
425
- . chain ( iter:: repeat_with ( || Err ( "proc-macro-srv is not running" . into ( ) ) ) ) ;
422
+ let proc_macro_clients = proc_macro_clients. iter ( ) . chain ( iter:: repeat ( & None ) ) ;
426
423
for ( client, paths) in proc_macro_clients. zip ( paths) {
427
424
for ( crate_id, res) in paths. iter ( ) {
428
425
let expansion_res = match client {
429
- Ok ( client) => match res {
426
+ Some ( Ok ( client) ) => match res {
430
427
Ok ( ( crate_name, path) ) => {
431
428
progress ( format ! ( "loading proc-macros: {path}" ) ) ;
432
429
let ignored_proc_macros = ignored_proc_macros
@@ -440,8 +437,11 @@ impl GlobalState {
440
437
}
441
438
Err ( e) => Err ( e. clone ( ) ) ,
442
439
} ,
443
- Err ( ref e) => Err ( ProcMacroLoadingError :: ProcMacroSrvError (
444
- e. clone ( ) . into_boxed_str ( ) ,
440
+ Some ( Err ( e) ) => Err ( ProcMacroLoadingError :: ProcMacroSrvError (
441
+ e. to_string ( ) . into_boxed_str ( ) ,
442
+ ) ) ,
443
+ None => Err ( ProcMacroLoadingError :: ProcMacroSrvError (
444
+ "proc-macro-srv is not running" . into ( ) ,
445
445
) ) ,
446
446
} ;
447
447
builder. insert ( * crate_id, expansion_res)
@@ -657,7 +657,10 @@ impl GlobalState {
657
657
self . proc_macro_clients = Arc :: from_iter ( self . workspaces . iter ( ) . map ( |ws| {
658
658
let path = match self . config . proc_macro_srv ( ) {
659
659
Some ( path) => path,
660
- None => ws. find_sysroot_proc_macro_srv ( ) ?,
660
+ None => match ws. find_sysroot_proc_macro_srv ( ) ? {
661
+ Ok ( path) => path,
662
+ Err ( e) => return Some ( Err ( e) ) ,
663
+ } ,
661
664
} ;
662
665
663
666
let env: FxHashMap < _ , _ > = match & ws. kind {
@@ -684,14 +687,14 @@ impl GlobalState {
684
687
} ;
685
688
info ! ( "Using proc-macro server at {path}" ) ;
686
689
687
- ProcMacroClient :: spawn ( & path, & env) . map_err ( |err| {
690
+ Some ( ProcMacroClient :: spawn ( & path, & env) . map_err ( |err| {
688
691
tracing:: error!(
689
692
"Failed to run proc-macro server from path {path}, error: {err:?}" ,
690
693
) ;
691
694
anyhow:: format_err!(
692
695
"Failed to run proc-macro server from path {path}, error: {err:?}" ,
693
696
)
694
- } )
697
+ } ) )
695
698
} ) )
696
699
}
697
700
0 commit comments