@@ -11,7 +11,7 @@ use hir_expand::proc_macro::{
1111} ;
1212use ide_db:: {
1313 ChangeWithProcMacros , FxHashMap , RootDatabase ,
14- base_db:: { CrateGraphBuilder , Env , SourceRoot , SourceRootId } ,
14+ base_db:: { CrateGraphBuilder , Env , ProcMacroLoadingError , SourceRoot , SourceRootId } ,
1515 prime_caches,
1616} ;
1717use itertools:: Itertools ;
@@ -81,19 +81,16 @@ pub fn load_workspace(
8181 ProcMacroServerChoice :: Sysroot => ws
8282 . find_sysroot_proc_macro_srv ( )
8383 . and_then ( |it| ProcMacroClient :: spawn ( & it, extra_env) . map_err ( Into :: into) )
84- . map_err ( |e| ( e, true ) ) ,
85- ProcMacroServerChoice :: Explicit ( path) => {
86- ProcMacroClient :: spawn ( path, extra_env) . map_err ( Into :: into) . map_err ( |e| ( e, true ) )
87- }
88- ProcMacroServerChoice :: None => {
89- Err ( ( anyhow:: format_err!( "proc macro server disabled" ) , false ) )
90- }
84+ . map_err ( |e| ProcMacroLoadingError :: ProcMacroSrvError ( e. to_string ( ) . into_boxed_str ( ) ) ) ,
85+ ProcMacroServerChoice :: Explicit ( path) => ProcMacroClient :: spawn ( path, extra_env)
86+ . map_err ( |e| ProcMacroLoadingError :: ProcMacroSrvError ( e. to_string ( ) . into_boxed_str ( ) ) ) ,
87+ ProcMacroServerChoice :: None => Err ( ProcMacroLoadingError :: Disabled ) ,
9188 } ;
9289 match & proc_macro_server {
9390 Ok ( server) => {
9491 tracing:: info!( path=%server. server_path( ) , "Proc-macro server started" )
9592 }
96- Err ( ( e , _ ) ) => {
93+ Err ( e ) => {
9794 tracing:: info!( %e, "Failed to start proc-macro server" )
9895 }
9996 }
@@ -112,21 +109,18 @@ pub fn load_workspace(
112109 let proc_macros = {
113110 let proc_macro_server = match & proc_macro_server {
114111 Ok ( it) => Ok ( it) ,
115- Err ( ( e , hard_err ) ) => Err ( ( e. to_string ( ) , * hard_err ) ) ,
112+ Err ( e ) => Err ( ProcMacroLoadingError :: ProcMacroSrvError ( e. to_string ( ) . into_boxed_str ( ) ) ) ,
116113 } ;
117114 proc_macros
118115 . into_iter ( )
119116 . map ( |( crate_id, path) | {
120117 (
121118 crate_id,
122- path. map_or_else (
123- |e| Err ( ( e, true ) ) ,
124- |( _, path) | {
125- proc_macro_server. as_ref ( ) . map_err ( Clone :: clone) . and_then (
126- |proc_macro_server| load_proc_macro ( proc_macro_server, & path, & [ ] ) ,
127- )
128- } ,
129- ) ,
119+ path. map_or_else ( Err , |( _, path) | {
120+ proc_macro_server. as_ref ( ) . map_err ( Clone :: clone) . and_then (
121+ |proc_macro_server| load_proc_macro ( proc_macro_server, & path, & [ ] ) ,
122+ )
123+ } ) ,
130124 )
131125 } )
132126 . collect ( )
@@ -391,11 +385,13 @@ pub fn load_proc_macro(
391385 path : & AbsPath ,
392386 ignored_macros : & [ Box < str > ] ,
393387) -> ProcMacroLoadResult {
394- let res: Result < Vec < _ > , String > = ( || {
388+ let res: Result < Vec < _ > , _ > = ( || {
395389 let dylib = MacroDylib :: new ( path. to_path_buf ( ) ) ;
396- let vec = server. load_dylib ( dylib) . map_err ( |e| format ! ( "{e}" ) ) ?;
390+ let vec = server. load_dylib ( dylib) . map_err ( |e| {
391+ ProcMacroLoadingError :: ProcMacroSrvError ( format ! ( "{e}" ) . into_boxed_str ( ) )
392+ } ) ?;
397393 if vec. is_empty ( ) {
398- return Err ( "proc macro library returned no proc macros" . to_owned ( ) ) ;
394+ return Err ( ProcMacroLoadingError :: NoProcMacros ) ;
399395 }
400396 Ok ( vec
401397 . into_iter ( )
@@ -412,7 +408,7 @@ pub fn load_proc_macro(
412408 }
413409 Err ( e) => {
414410 tracing:: warn!( "proc-macro loading for {path} failed: {e}" ) ;
415- Err ( ( e , true ) )
411+ Err ( e )
416412 }
417413 }
418414}
0 commit comments