@@ -8,7 +8,6 @@ use anyhow::{format_err, Context, Result};
88use base_db:: { CrateDisplayName , CrateGraph , CrateId , CrateName , Edition , Env , FileId , ProcMacro } ;
99use cfg:: { CfgDiff , CfgOptions } ;
1010use paths:: { AbsPath , AbsPathBuf } ;
11- use proc_macro_api:: ProcMacroClient ;
1211use rustc_hash:: { FxHashMap , FxHashSet } ;
1312use stdx:: always;
1413
@@ -350,19 +349,15 @@ impl ProjectWorkspace {
350349
351350 pub fn to_crate_graph (
352351 & self ,
353- proc_macro_client : Option < & ProcMacroClient > ,
352+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
354353 load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
355354 ) -> CrateGraph {
356355 let _p = profile:: span ( "ProjectWorkspace::to_crate_graph" ) ;
357- let proc_macro_loader = |path : & AbsPath | match proc_macro_client {
358- Some ( client) => client. by_dylib_path ( path) ,
359- None => Vec :: new ( ) ,
360- } ;
361356
362357 let mut crate_graph = match self {
363358 ProjectWorkspace :: Json { project, sysroot, rustc_cfg } => project_json_to_crate_graph (
364359 rustc_cfg. clone ( ) ,
365- & proc_macro_loader ,
360+ load_proc_macro ,
366361 load,
367362 project,
368363 sysroot,
@@ -377,7 +372,7 @@ impl ProjectWorkspace {
377372 } => cargo_to_crate_graph (
378373 rustc_cfg. clone ( ) ,
379374 cfg_overrides,
380- & proc_macro_loader ,
375+ load_proc_macro ,
381376 load,
382377 cargo,
383378 build_scripts,
@@ -399,7 +394,7 @@ impl ProjectWorkspace {
399394
400395fn project_json_to_crate_graph (
401396 rustc_cfg : Vec < CfgFlag > ,
402- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
397+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
403398 load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
404399 project : & ProjectJson ,
405400 sysroot : & Option < Sysroot > ,
@@ -419,7 +414,7 @@ fn project_json_to_crate_graph(
419414 } )
420415 . map ( |( crate_id, krate, file_id) | {
421416 let env = krate. env . clone ( ) . into_iter ( ) . collect ( ) ;
422- let proc_macro = krate. proc_macro_dylib_path . clone ( ) . map ( |it| proc_macro_loader ( & it) ) ;
417+ let proc_macro = krate. proc_macro_dylib_path . clone ( ) . map ( |it| load_proc_macro ( & it) ) ;
423418
424419 let target_cfgs = match krate. target . as_deref ( ) {
425420 Some ( target) => {
@@ -476,7 +471,7 @@ fn project_json_to_crate_graph(
476471fn cargo_to_crate_graph (
477472 rustc_cfg : Vec < CfgFlag > ,
478473 override_cfg : & CfgOverrides ,
479- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
474+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
480475 load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
481476 cargo : & CargoWorkspace ,
482477 build_scripts : & WorkspaceBuildScripts ,
@@ -528,7 +523,7 @@ fn cargo_to_crate_graph(
528523 & cargo[ pkg] ,
529524 build_scripts. outputs . get ( pkg) ,
530525 & cfg_options,
531- proc_macro_loader ,
526+ load_proc_macro ,
532527 file_id,
533528 & cargo[ tgt] . name ,
534529 ) ;
@@ -599,7 +594,7 @@ fn cargo_to_crate_graph(
599594 load,
600595 & mut crate_graph,
601596 & cfg_options,
602- proc_macro_loader ,
597+ load_proc_macro ,
603598 & mut pkg_to_lib_crate,
604599 & public_deps,
605600 cargo,
@@ -658,7 +653,7 @@ fn handle_rustc_crates(
658653 load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
659654 crate_graph : & mut CrateGraph ,
660655 cfg_options : & CfgOptions ,
661- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
656+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
662657 pkg_to_lib_crate : & mut FxHashMap < la_arena:: Idx < crate :: PackageData > , CrateId > ,
663658 public_deps : & [ ( CrateName , CrateId ) ] ,
664659 cargo : & CargoWorkspace ,
@@ -694,7 +689,7 @@ fn handle_rustc_crates(
694689 & rustc_workspace[ pkg] ,
695690 None ,
696691 cfg_options,
697- proc_macro_loader ,
692+ load_proc_macro ,
698693 file_id,
699694 & rustc_workspace[ tgt] . name ,
700695 ) ;
@@ -750,7 +745,7 @@ fn add_target_crate_root(
750745 pkg : & PackageData ,
751746 build_data : Option < & BuildScriptOutput > ,
752747 cfg_options : & CfgOptions ,
753- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
748+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
754749 file_id : FileId ,
755750 cargo_name : & str ,
756751) -> CrateId {
@@ -778,7 +773,7 @@ fn add_target_crate_root(
778773 let proc_macro = build_data
779774 . as_ref ( )
780775 . and_then ( |it| it. proc_macro_dylib_path . as_ref ( ) )
781- . map ( |it| proc_macro_loader ( it) )
776+ . map ( |it| load_proc_macro ( it) )
782777 . unwrap_or_default ( ) ;
783778
784779 let display_name = CrateDisplayName :: from_canonical_name ( cargo_name. to_string ( ) ) ;
0 commit comments