@@ -303,9 +303,11 @@ pub struct CrateData<Id> {
303303 pub dependencies : Vec < Dependency < Id > > ,
304304 pub origin : CrateOrigin ,
305305 pub is_proc_macro : bool ,
306- /// The working directory to run proc-macros in. This is the workspace root of the cargo workspace
307- /// for workspace members, the crate manifest dir otherwise.
308- pub proc_macro_cwd : Option < AbsPathBuf > ,
306+ /// The working directory to run proc-macros in invoked in the context of this crate.
307+ /// This is the workspace root of the cargo workspace for workspace members, the crate manifest
308+ /// dir otherwise.
309+ // FIXME: This ought to be a `VfsPath` or something opaque.
310+ pub proc_macro_cwd : Arc < AbsPathBuf > ,
309311}
310312
311313pub type CrateDataBuilder = CrateData < CrateBuilderId > ;
@@ -425,7 +427,7 @@ impl CrateGraphBuilder {
425427 mut env : Env ,
426428 origin : CrateOrigin ,
427429 is_proc_macro : bool ,
428- proc_macro_cwd : Option < AbsPathBuf > ,
430+ proc_macro_cwd : Arc < AbsPathBuf > ,
429431 ws_data : Arc < CrateWorkspaceData > ,
430432 ) -> CrateBuilderId {
431433 env. entries . shrink_to_fit ( ) ;
@@ -861,6 +863,7 @@ impl fmt::Display for CyclicDependenciesError {
861863#[ cfg( test) ]
862864mod tests {
863865 use triomphe:: Arc ;
866+ use vfs:: AbsPathBuf ;
864867
865868 use crate :: { CrateWorkspaceData , DependencyBuilder } ;
866869
@@ -883,7 +886,7 @@ mod tests {
883886 Env :: default ( ) ,
884887 CrateOrigin :: Local { repo : None , name : None } ,
885888 false ,
886- None ,
889+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
887890 empty_ws_data ( ) ,
888891 ) ;
889892 let crate2 = graph. add_crate_root (
@@ -896,7 +899,7 @@ mod tests {
896899 Env :: default ( ) ,
897900 CrateOrigin :: Local { repo : None , name : None } ,
898901 false ,
899- None ,
902+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
900903 empty_ws_data ( ) ,
901904 ) ;
902905 let crate3 = graph. add_crate_root (
@@ -909,7 +912,7 @@ mod tests {
909912 Env :: default ( ) ,
910913 CrateOrigin :: Local { repo : None , name : None } ,
911914 false ,
912- None ,
915+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
913916 empty_ws_data ( ) ,
914917 ) ;
915918 assert ! (
@@ -942,7 +945,7 @@ mod tests {
942945 Env :: default ( ) ,
943946 CrateOrigin :: Local { repo : None , name : None } ,
944947 false ,
945- None ,
948+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
946949 empty_ws_data ( ) ,
947950 ) ;
948951 let crate2 = graph. add_crate_root (
@@ -955,7 +958,7 @@ mod tests {
955958 Env :: default ( ) ,
956959 CrateOrigin :: Local { repo : None , name : None } ,
957960 false ,
958- None ,
961+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
959962 empty_ws_data ( ) ,
960963 ) ;
961964 assert ! (
@@ -983,7 +986,7 @@ mod tests {
983986 Env :: default ( ) ,
984987 CrateOrigin :: Local { repo : None , name : None } ,
985988 false ,
986- None ,
989+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
987990 empty_ws_data ( ) ,
988991 ) ;
989992 let crate2 = graph. add_crate_root (
@@ -996,7 +999,7 @@ mod tests {
996999 Env :: default ( ) ,
9971000 CrateOrigin :: Local { repo : None , name : None } ,
9981001 false ,
999- None ,
1002+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
10001003 empty_ws_data ( ) ,
10011004 ) ;
10021005 let crate3 = graph. add_crate_root (
@@ -1009,7 +1012,7 @@ mod tests {
10091012 Env :: default ( ) ,
10101013 CrateOrigin :: Local { repo : None , name : None } ,
10111014 false ,
1012- None ,
1015+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
10131016 empty_ws_data ( ) ,
10141017 ) ;
10151018 assert ! (
@@ -1037,7 +1040,7 @@ mod tests {
10371040 Env :: default ( ) ,
10381041 CrateOrigin :: Local { repo : None , name : None } ,
10391042 false ,
1040- None ,
1043+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
10411044 empty_ws_data ( ) ,
10421045 ) ;
10431046 let crate2 = graph. add_crate_root (
@@ -1050,7 +1053,7 @@ mod tests {
10501053 Env :: default ( ) ,
10511054 CrateOrigin :: Local { repo : None , name : None } ,
10521055 false ,
1053- None ,
1056+ Arc :: new ( AbsPathBuf :: assert_utf8 ( std :: env :: current_dir ( ) . unwrap ( ) ) ) ,
10541057 empty_ws_data ( ) ,
10551058 ) ;
10561059 assert ! (
0 commit comments