@@ -4,7 +4,7 @@ pub mod files;
4
4
5
5
use camino:: Utf8PathBuf ;
6
6
7
- use common:: { urlext:: canonical_url, InputDb } ;
7
+ use common:: { config :: DependencyDescription , urlext:: canonical_url, InputDb } ;
8
8
pub use db:: DriverDataBase ;
9
9
10
10
use common:: {
@@ -13,7 +13,7 @@ use common::{
13
13
} ;
14
14
use hir:: hir_def:: TopLevelMod ;
15
15
use resolver:: {
16
- files:: { File , FilesResolver } ,
16
+ files:: { File , FilesResolutionError , FilesResolver } ,
17
17
ingot:: ingot_graph_resolver,
18
18
ResolutionHandler , Resolver ,
19
19
} ;
@@ -22,7 +22,13 @@ use url::Url;
22
22
23
23
pub fn setup_workspace (
24
24
path : & Utf8PathBuf ,
25
- ) -> ( DriverDataBase , Workspace , Vec < WorkspaceSetupDiagnostics > ) {
25
+ ) -> (
26
+ DriverDataBase ,
27
+ Workspace ,
28
+ Url ,
29
+ Vec < Url > ,
30
+ Vec < WorkspaceSetupDiagnostics > ,
31
+ ) {
26
32
let mut db = DriverDataBase :: default ( ) ;
27
33
let ingot_url = canonical_url ( path) . unwrap ( ) ;
28
34
let workspace = db. workspace ( ) ;
@@ -31,12 +37,22 @@ pub fn setup_workspace(
31
37
workspace,
32
38
} ;
33
39
let mut ingot_graph_resolver = ingot_graph_resolver ( node_handler) ;
34
- let _graph = ingot_graph_resolver. transient_resolve ( & ingot_url) . unwrap ( ) ;
40
+ let graph = ingot_graph_resolver. transient_resolve ( & ingot_url) . unwrap ( ) ;
41
+ let dependency_urls = graph
42
+ . node_weights ( )
43
+ . filter ( |weight| * weight != & ingot_url)
44
+ . cloned ( )
45
+ . collect ( ) ;
35
46
36
47
let diagnostics = ingot_graph_resolver
37
48
. take_diagnostics ( )
38
49
. into_iter ( )
39
- . map ( |diagnostic| WorkspaceSetupDiagnostics :: UnresolvableIngotDependency )
50
+ . map (
51
+ |diagnostic| WorkspaceSetupDiagnostics :: UnresolvableIngotDependency {
52
+ target : diagnostic. 0 ,
53
+ error : diagnostic. 1 ,
54
+ } ,
55
+ )
40
56
. chain (
41
57
ingot_graph_resolver
42
58
. node_resolver
@@ -46,7 +62,7 @@ pub fn setup_workspace(
46
62
)
47
63
. collect ( ) ;
48
64
49
- ( db, workspace, diagnostics)
65
+ ( db, workspace, ingot_url , dependency_urls , diagnostics)
50
66
}
51
67
52
68
fn _dump_scope_graph ( db : & DriverDataBase , top_mod : TopLevelMod ) -> String {
@@ -57,9 +73,12 @@ fn _dump_scope_graph(db: &DriverDataBase, top_mod: TopLevelMod) -> String {
57
73
58
74
// Maybe the driver should eventually only support WASI?
59
75
60
- #[ derive( Clone , Debug ) ]
76
+ #[ derive( Debug ) ]
61
77
pub enum WorkspaceSetupDiagnostics {
62
- UnresolvableIngotDependency ,
78
+ UnresolvableIngotDependency {
79
+ target : Url ,
80
+ error : FilesResolutionError ,
81
+ } ,
63
82
IngotDependencyCycle ,
64
83
FileError ,
65
84
}
0 commit comments