@@ -524,6 +524,17 @@ impl ProjectWorkspace {
524
524
}
525
525
}
526
526
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
+
527
538
pub fn find_sysroot_proc_macro_srv ( & self ) -> anyhow:: Result < AbsPathBuf > {
528
539
self . sysroot . discover_proc_macro_srv ( )
529
540
}
@@ -568,27 +579,15 @@ impl ProjectWorkspace {
568
579
match & self . kind {
569
580
ProjectWorkspaceKind :: Json ( project) => project
570
581
. 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 ( ) ,
592
591
} )
593
592
. collect :: < FxHashSet < _ > > ( )
594
593
. into_iter ( )
0 commit comments