@@ -63,6 +63,8 @@ pub struct ProjectWorkspace {
6363 pub target_layout : TargetLayoutLoadResult ,
6464 /// A set of cfg overrides for this workspace.
6565 pub cfg_overrides : CfgOverrides ,
66+ /// Additional includes to add for the VFS.
67+ pub extra_includes : Vec < AbsPathBuf > ,
6668}
6769
6870#[ derive( Clone ) ]
@@ -104,7 +106,15 @@ pub enum ProjectWorkspaceKind {
104106impl fmt:: Debug for ProjectWorkspace {
105107 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
106108 // Make sure this isn't too verbose.
107- let Self { kind, sysroot, rustc_cfg, toolchain, target_layout, cfg_overrides } = self ;
109+ let Self {
110+ kind,
111+ sysroot,
112+ rustc_cfg,
113+ toolchain,
114+ target_layout,
115+ cfg_overrides,
116+ extra_includes,
117+ } = self ;
108118 match kind {
109119 ProjectWorkspaceKind :: Cargo { cargo, error : _, build_scripts, rustc, set_test } => f
110120 . debug_struct ( "Cargo" )
@@ -117,6 +127,7 @@ impl fmt::Debug for ProjectWorkspace {
117127 )
118128 . field ( "n_rustc_cfg" , & rustc_cfg. len ( ) )
119129 . field ( "n_cfg_overrides" , & cfg_overrides. len ( ) )
130+ . field ( "n_extra_includes" , & extra_includes. len ( ) )
120131 . field ( "toolchain" , & toolchain)
121132 . field ( "data_layout" , & target_layout)
122133 . field ( "set_test" , set_test)
@@ -130,7 +141,8 @@ impl fmt::Debug for ProjectWorkspace {
130141 . field ( "n_rustc_cfg" , & rustc_cfg. len ( ) )
131142 . field ( "toolchain" , & toolchain)
132143 . field ( "data_layout" , & target_layout)
133- . field ( "n_cfg_overrides" , & cfg_overrides. len ( ) ) ;
144+ . field ( "n_cfg_overrides" , & cfg_overrides. len ( ) )
145+ . field ( "n_extra_includes" , & extra_includes. len ( ) ) ;
134146
135147 debug_struct. finish ( )
136148 }
@@ -144,6 +156,7 @@ impl fmt::Debug for ProjectWorkspace {
144156 . field ( "toolchain" , & toolchain)
145157 . field ( "data_layout" , & target_layout)
146158 . field ( "n_cfg_overrides" , & cfg_overrides. len ( ) )
159+ . field ( "n_extra_includes" , & extra_includes. len ( ) )
147160 . field ( "set_test" , set_test)
148161 . finish ( ) ,
149162 }
@@ -320,6 +333,7 @@ impl ProjectWorkspace {
320333 cfg_overrides,
321334 toolchain,
322335 target_layout : data_layout. map ( Arc :: from) . map_err ( |it| Arc :: from ( it. to_string ( ) ) ) ,
336+ extra_includes : config. extra_includes . clone ( ) ,
323337 } )
324338 }
325339
@@ -340,6 +354,7 @@ impl ProjectWorkspace {
340354 toolchain,
341355 target_layout : data_layout. map ( Arc :: from) . map_err ( |it| Arc :: from ( it. to_string ( ) ) ) ,
342356 cfg_overrides : config. cfg_overrides . clone ( ) ,
357+ extra_includes : config. extra_includes . clone ( ) ,
343358 }
344359 }
345360
@@ -399,6 +414,7 @@ impl ProjectWorkspace {
399414 toolchain,
400415 target_layout : data_layout. map ( Arc :: from) . map_err ( |it| Arc :: from ( it. to_string ( ) ) ) ,
401416 cfg_overrides : config. cfg_overrides . clone ( ) ,
417+ extra_includes : config. extra_includes . clone ( ) ,
402418 } )
403419 }
404420
@@ -565,7 +581,13 @@ impl ProjectWorkspace {
565581
566582 PackageRoot {
567583 is_local : krate. is_workspace_member ,
568- include : krate. include . iter ( ) . cloned ( ) . chain ( build_file) . collect ( ) ,
584+ include : krate
585+ . include
586+ . iter ( )
587+ . cloned ( )
588+ . chain ( build_file)
589+ . chain ( self . extra_includes . iter ( ) . cloned ( ) )
590+ . collect ( ) ,
569591 exclude : krate. exclude . clone ( ) ,
570592 }
571593 } )
@@ -603,6 +625,8 @@ impl ProjectWorkspace {
603625
604626 let mut exclude = vec ! [ pkg_root. join( ".git" ) ] ;
605627 if is_local {
628+ include. extend ( self . extra_includes . iter ( ) . cloned ( ) ) ;
629+
606630 exclude. push ( pkg_root. join ( "target" ) ) ;
607631 } else {
608632 exclude. push ( pkg_root. join ( "tests" ) ) ;
@@ -661,6 +685,8 @@ impl ProjectWorkspace {
661685
662686 let mut exclude = vec ! [ pkg_root. join( ".git" ) ] ;
663687 if is_local {
688+ include. extend ( self . extra_includes . iter ( ) . cloned ( ) ) ;
689+
664690 exclude. push ( pkg_root. join ( "target" ) ) ;
665691 } else {
666692 exclude. push ( pkg_root. join ( "tests" ) ) ;
0 commit comments