@@ -194,8 +194,7 @@ impl GlobalState {
194194 format_to ! ( message, "{e}" ) ;
195195 } ) ;
196196
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 ) ) ;
199198
200199 for ( ws, proc_macro_client) in self . workspaces . iter ( ) . zip ( proc_macro_clients) {
201200 if let ProjectWorkspaceKind :: Cargo { error : Some ( error) , .. }
@@ -252,7 +251,8 @@ impl GlobalState {
252251 message. push_str ( "\n \n " ) ;
253252 }
254253 }
255- _ => ( ) ,
254+ // sysroot was explicitly not set so we didn't discover a server
255+ None => { }
256256 }
257257 }
258258 }
@@ -419,14 +419,11 @@ impl GlobalState {
419419 } ;
420420
421421 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 ) ) ;
426423 for ( client, paths) in proc_macro_clients. zip ( paths) {
427424 for ( crate_id, res) in paths. iter ( ) {
428425 let expansion_res = match client {
429- Ok ( client) => match res {
426+ Some ( Ok ( client) ) => match res {
430427 Ok ( ( crate_name, path) ) => {
431428 progress ( format ! ( "loading proc-macros: {path}" ) ) ;
432429 let ignored_proc_macros = ignored_proc_macros
@@ -440,8 +437,11 @@ impl GlobalState {
440437 }
441438 Err ( e) => Err ( e. clone ( ) ) ,
442439 } ,
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 ( ) ,
445445 ) ) ,
446446 } ;
447447 builder. insert ( * crate_id, expansion_res)
@@ -657,7 +657,10 @@ impl GlobalState {
657657 self . proc_macro_clients = Arc :: from_iter ( self . workspaces . iter ( ) . map ( |ws| {
658658 let path = match self . config . proc_macro_srv ( ) {
659659 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+ } ,
661664 } ;
662665
663666 let env: FxHashMap < _ , _ > = match & ws. kind {
@@ -684,14 +687,14 @@ impl GlobalState {
684687 } ;
685688 info ! ( "Using proc-macro server at {path}" ) ;
686689
687- ProcMacroClient :: spawn ( & path, & env) . map_err ( |err| {
690+ Some ( ProcMacroClient :: spawn ( & path, & env) . map_err ( |err| {
688691 tracing:: error!(
689692 "Failed to run proc-macro server from path {path}, error: {err:?}" ,
690693 ) ;
691694 anyhow:: format_err!(
692695 "Failed to run proc-macro server from path {path}, error: {err:?}" ,
693696 )
694- } )
697+ } ) )
695698 } ) )
696699 }
697700
0 commit comments