@@ -8,7 +8,6 @@ use anyhow::{format_err, Context, Result};
8
8
use base_db:: { CrateDisplayName , CrateGraph , CrateId , CrateName , Edition , Env , FileId , ProcMacro } ;
9
9
use cfg:: { CfgDiff , CfgOptions } ;
10
10
use paths:: { AbsPath , AbsPathBuf } ;
11
- use proc_macro_api:: ProcMacroClient ;
12
11
use rustc_hash:: { FxHashMap , FxHashSet } ;
13
12
use stdx:: always;
14
13
@@ -350,19 +349,15 @@ impl ProjectWorkspace {
350
349
351
350
pub fn to_crate_graph (
352
351
& self ,
353
- proc_macro_client : Option < & ProcMacroClient > ,
352
+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
354
353
load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
355
354
) -> CrateGraph {
356
355
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
- } ;
361
356
362
357
let mut crate_graph = match self {
363
358
ProjectWorkspace :: Json { project, sysroot, rustc_cfg } => project_json_to_crate_graph (
364
359
rustc_cfg. clone ( ) ,
365
- & proc_macro_loader ,
360
+ load_proc_macro ,
366
361
load,
367
362
project,
368
363
sysroot,
@@ -377,7 +372,7 @@ impl ProjectWorkspace {
377
372
} => cargo_to_crate_graph (
378
373
rustc_cfg. clone ( ) ,
379
374
cfg_overrides,
380
- & proc_macro_loader ,
375
+ load_proc_macro ,
381
376
load,
382
377
cargo,
383
378
build_scripts,
@@ -399,7 +394,7 @@ impl ProjectWorkspace {
399
394
400
395
fn project_json_to_crate_graph (
401
396
rustc_cfg : Vec < CfgFlag > ,
402
- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
397
+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
403
398
load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
404
399
project : & ProjectJson ,
405
400
sysroot : & Option < Sysroot > ,
@@ -419,7 +414,7 @@ fn project_json_to_crate_graph(
419
414
} )
420
415
. map ( |( crate_id, krate, file_id) | {
421
416
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) ) ;
423
418
424
419
let target_cfgs = match krate. target . as_deref ( ) {
425
420
Some ( target) => {
@@ -476,7 +471,7 @@ fn project_json_to_crate_graph(
476
471
fn cargo_to_crate_graph (
477
472
rustc_cfg : Vec < CfgFlag > ,
478
473
override_cfg : & CfgOverrides ,
479
- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
474
+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
480
475
load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
481
476
cargo : & CargoWorkspace ,
482
477
build_scripts : & WorkspaceBuildScripts ,
@@ -528,7 +523,7 @@ fn cargo_to_crate_graph(
528
523
& cargo[ pkg] ,
529
524
build_scripts. outputs . get ( pkg) ,
530
525
& cfg_options,
531
- proc_macro_loader ,
526
+ load_proc_macro ,
532
527
file_id,
533
528
& cargo[ tgt] . name ,
534
529
) ;
@@ -599,7 +594,7 @@ fn cargo_to_crate_graph(
599
594
load,
600
595
& mut crate_graph,
601
596
& cfg_options,
602
- proc_macro_loader ,
597
+ load_proc_macro ,
603
598
& mut pkg_to_lib_crate,
604
599
& public_deps,
605
600
cargo,
@@ -658,7 +653,7 @@ fn handle_rustc_crates(
658
653
load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
659
654
crate_graph : & mut CrateGraph ,
660
655
cfg_options : & CfgOptions ,
661
- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
656
+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
662
657
pkg_to_lib_crate : & mut FxHashMap < la_arena:: Idx < crate :: PackageData > , CrateId > ,
663
658
public_deps : & [ ( CrateName , CrateId ) ] ,
664
659
cargo : & CargoWorkspace ,
@@ -694,7 +689,7 @@ fn handle_rustc_crates(
694
689
& rustc_workspace[ pkg] ,
695
690
None ,
696
691
cfg_options,
697
- proc_macro_loader ,
692
+ load_proc_macro ,
698
693
file_id,
699
694
& rustc_workspace[ tgt] . name ,
700
695
) ;
@@ -750,7 +745,7 @@ fn add_target_crate_root(
750
745
pkg : & PackageData ,
751
746
build_data : Option < & BuildScriptOutput > ,
752
747
cfg_options : & CfgOptions ,
753
- proc_macro_loader : & dyn Fn ( & AbsPath ) -> Vec < ProcMacro > ,
748
+ load_proc_macro : & mut dyn FnMut ( & AbsPath ) -> Vec < ProcMacro > ,
754
749
file_id : FileId ,
755
750
cargo_name : & str ,
756
751
) -> CrateId {
@@ -778,7 +773,7 @@ fn add_target_crate_root(
778
773
let proc_macro = build_data
779
774
. as_ref ( )
780
775
. and_then ( |it| it. proc_macro_dylib_path . as_ref ( ) )
781
- . map ( |it| proc_macro_loader ( it) )
776
+ . map ( |it| load_proc_macro ( it) )
782
777
. unwrap_or_default ( ) ;
783
778
784
779
let display_name = CrateDisplayName :: from_canonical_name ( cargo_name. to_string ( ) ) ;
0 commit comments