@@ -296,6 +296,9 @@ pub struct CrateData {
296
296
pub dependencies : Vec < Dependency > ,
297
297
pub origin : CrateOrigin ,
298
298
pub is_proc_macro : bool ,
299
+ /// The working directory to run proc-macros in. This is the workspace root of the cargo workspace
300
+ /// for workspace members, the crate manifest dir otherwise.
301
+ pub proc_macro_cwd : Option < AbsPathBuf > ,
299
302
}
300
303
301
304
#[ derive( Default , Clone , PartialEq , Eq ) ]
@@ -360,8 +363,9 @@ impl CrateGraph {
360
363
cfg_options : Arc < CfgOptions > ,
361
364
potential_cfg_options : Option < Arc < CfgOptions > > ,
362
365
mut env : Env ,
363
- is_proc_macro : bool ,
364
366
origin : CrateOrigin ,
367
+ is_proc_macro : bool ,
368
+ proc_macro_cwd : Option < AbsPathBuf > ,
365
369
) -> CrateId {
366
370
env. entries . shrink_to_fit ( ) ;
367
371
let data = CrateData {
@@ -375,6 +379,7 @@ impl CrateGraph {
375
379
dependencies : Vec :: new ( ) ,
376
380
origin,
377
381
is_proc_macro,
382
+ proc_macro_cwd,
378
383
} ;
379
384
self . arena . alloc ( data)
380
385
}
@@ -698,8 +703,9 @@ mod tests {
698
703
Default :: default ( ) ,
699
704
Default :: default ( ) ,
700
705
Env :: default ( ) ,
701
- false ,
702
706
CrateOrigin :: Local { repo : None , name : None } ,
707
+ false ,
708
+ None ,
703
709
) ;
704
710
let crate2 = graph. add_crate_root (
705
711
FileId :: from_raw ( 2u32 ) ,
@@ -709,8 +715,9 @@ mod tests {
709
715
Default :: default ( ) ,
710
716
Default :: default ( ) ,
711
717
Env :: default ( ) ,
712
- false ,
713
718
CrateOrigin :: Local { repo : None , name : None } ,
719
+ false ,
720
+ None ,
714
721
) ;
715
722
let crate3 = graph. add_crate_root (
716
723
FileId :: from_raw ( 3u32 ) ,
@@ -720,8 +727,9 @@ mod tests {
720
727
Default :: default ( ) ,
721
728
Default :: default ( ) ,
722
729
Env :: default ( ) ,
723
- false ,
724
730
CrateOrigin :: Local { repo : None , name : None } ,
731
+ false ,
732
+ None ,
725
733
) ;
726
734
assert ! ( graph
727
735
. add_dep( crate1, Dependency :: new( CrateName :: new( "crate2" ) . unwrap( ) , crate2, ) )
@@ -745,8 +753,9 @@ mod tests {
745
753
Default :: default ( ) ,
746
754
Default :: default ( ) ,
747
755
Env :: default ( ) ,
748
- false ,
749
756
CrateOrigin :: Local { repo : None , name : None } ,
757
+ false ,
758
+ None ,
750
759
) ;
751
760
let crate2 = graph. add_crate_root (
752
761
FileId :: from_raw ( 2u32 ) ,
@@ -756,8 +765,9 @@ mod tests {
756
765
Default :: default ( ) ,
757
766
Default :: default ( ) ,
758
767
Env :: default ( ) ,
759
- false ,
760
768
CrateOrigin :: Local { repo : None , name : None } ,
769
+ false ,
770
+ None ,
761
771
) ;
762
772
assert ! ( graph
763
773
. add_dep( crate1, Dependency :: new( CrateName :: new( "crate2" ) . unwrap( ) , crate2, ) )
@@ -778,8 +788,9 @@ mod tests {
778
788
Default :: default ( ) ,
779
789
Default :: default ( ) ,
780
790
Env :: default ( ) ,
781
- false ,
782
791
CrateOrigin :: Local { repo : None , name : None } ,
792
+ false ,
793
+ None ,
783
794
) ;
784
795
let crate2 = graph. add_crate_root (
785
796
FileId :: from_raw ( 2u32 ) ,
@@ -789,8 +800,9 @@ mod tests {
789
800
Default :: default ( ) ,
790
801
Default :: default ( ) ,
791
802
Env :: default ( ) ,
792
- false ,
793
803
CrateOrigin :: Local { repo : None , name : None } ,
804
+ false ,
805
+ None ,
794
806
) ;
795
807
let crate3 = graph. add_crate_root (
796
808
FileId :: from_raw ( 3u32 ) ,
@@ -800,8 +812,9 @@ mod tests {
800
812
Default :: default ( ) ,
801
813
Default :: default ( ) ,
802
814
Env :: default ( ) ,
803
- false ,
804
815
CrateOrigin :: Local { repo : None , name : None } ,
816
+ false ,
817
+ None ,
805
818
) ;
806
819
assert ! ( graph
807
820
. add_dep( crate1, Dependency :: new( CrateName :: new( "crate2" ) . unwrap( ) , crate2, ) )
@@ -822,8 +835,9 @@ mod tests {
822
835
Default :: default ( ) ,
823
836
Default :: default ( ) ,
824
837
Env :: default ( ) ,
825
- false ,
826
838
CrateOrigin :: Local { repo : None , name : None } ,
839
+ false ,
840
+ None ,
827
841
) ;
828
842
let crate2 = graph. add_crate_root (
829
843
FileId :: from_raw ( 2u32 ) ,
@@ -833,8 +847,9 @@ mod tests {
833
847
Default :: default ( ) ,
834
848
Default :: default ( ) ,
835
849
Env :: default ( ) ,
836
- false ,
837
850
CrateOrigin :: Local { repo : None , name : None } ,
851
+ false ,
852
+ None ,
838
853
) ;
839
854
assert ! ( graph
840
855
. add_dep(
0 commit comments