@@ -524,6 +524,17 @@ impl ProjectWorkspace {
524524 }
525525 }
526526
527+ pub fn buildfiles ( & self ) -> Vec < AbsPathBuf > {
528+ match & self . kind {
529+ ProjectWorkspaceKind :: Json ( project) => project
530+ . crates ( )
531+ . filter_map ( |( _, krate) | krate. build . as_ref ( ) . map ( |build| build. build_file . clone ( ) ) )
532+ . map ( |build_file| self . workspace_root ( ) . join ( build_file) )
533+ . collect ( ) ,
534+ _ => vec ! [ ] ,
535+ }
536+ }
537+
527538 pub fn find_sysroot_proc_macro_srv ( & self ) -> anyhow:: Result < AbsPathBuf > {
528539 self . sysroot . discover_proc_macro_srv ( )
529540 }
@@ -568,27 +579,15 @@ impl ProjectWorkspace {
568579 match & self . kind {
569580 ProjectWorkspaceKind :: Json ( project) => project
570581 . crates ( )
571- . map ( |( _, krate) | {
572- // FIXME: PackageRoots dont allow specifying files, only directories
573- let build_file = krate
574- . build
575- . as_ref ( )
576- . map ( |build| self . workspace_root ( ) . join ( & build. build_file ) )
577- . as_deref ( )
578- . and_then ( AbsPath :: parent)
579- . map ( ToOwned :: to_owned) ;
580-
581- PackageRoot {
582- is_local : krate. is_workspace_member ,
583- include : krate
584- . include
585- . iter ( )
586- . cloned ( )
587- . chain ( build_file)
588- . chain ( self . extra_includes . iter ( ) . cloned ( ) )
589- . collect ( ) ,
590- exclude : krate. exclude . clone ( ) ,
591- }
582+ . map ( |( _, krate) | PackageRoot {
583+ is_local : krate. is_workspace_member ,
584+ include : krate
585+ . include
586+ . iter ( )
587+ . cloned ( )
588+ . chain ( self . extra_includes . iter ( ) . cloned ( ) )
589+ . collect ( ) ,
590+ exclude : krate. exclude . clone ( ) ,
592591 } )
593592 . collect :: < FxHashSet < _ > > ( )
594593 . into_iter ( )
0 commit comments