@@ -12,15 +12,11 @@ use crate::InputDb;
1212
1313type EdgeWeight = ( DependencyAlias , DependencyArguments ) ;
1414
15- #[ allow( clippy:: too_many_arguments) ] // salsa input constructor currently needs all fields
1615#[ salsa:: input]
1716#[ derive( Debug ) ]
1817pub struct DependencyGraph {
19- local_graph : DiGraph < Url , EdgeWeight > ,
20- local_node_map : HashMap < Url , NodeIndex > ,
21- remote_graph : DiGraph < Url , EdgeWeight > ,
22- remote_node_map : HashMap < Url , NodeIndex > ,
23- remote_sets : HashMap < Url , Vec < Url > > ,
18+ graph : DiGraph < Url , EdgeWeight > ,
19+ node_map : HashMap < Url , NodeIndex > ,
2420 git_locations : HashMap < Url , RemoteFiles > ,
2521 reverse_git_map : HashMap < RemoteFiles , Url > ,
2622}
@@ -32,9 +28,6 @@ impl DependencyGraph {
3228 db,
3329 DiGraph :: new ( ) ,
3430 HashMap :: new ( ) ,
35- DiGraph :: new ( ) ,
36- HashMap :: new ( ) ,
37- HashMap :: new ( ) ,
3831 HashMap :: new ( ) ,
3932 HashMap :: new ( ) ,
4033 )
@@ -54,70 +47,42 @@ impl DependencyGraph {
5447 }
5548 }
5649
57- pub fn ensure_local_node ( & self , db : & mut dyn InputDb , url : & Url ) {
58- if self . local_node_map ( db) . contains_key ( url) {
50+ pub fn ensure_node ( & self , db : & mut dyn InputDb , url : & Url ) {
51+ if self . node_map ( db) . contains_key ( url) {
5952 return ;
6053 }
61- let mut graph = self . local_graph ( db) ;
62- let mut node_map = self . local_node_map ( db) ;
54+ let mut graph = self . graph ( db) ;
55+ let mut node_map = self . node_map ( db) ;
6356 Self :: allocate_node ( & mut graph, & mut node_map, url) ;
64- self . set_local_graph ( db) . to ( graph) ;
65- self . set_local_node_map ( db) . to ( node_map) ;
57+ self . set_graph ( db) . to ( graph) ;
58+ self . set_node_map ( db) . to ( node_map) ;
6659 }
6760
68- pub fn contains_local_url ( & self , db : & dyn InputDb , url : & Url ) -> bool {
69- self . local_node_map ( db) . contains_key ( url)
70- }
71-
72- pub fn add_local_dependency (
73- & self ,
74- db : & mut dyn InputDb ,
75- source : & Url ,
76- target : & Url ,
77- alias : DependencyAlias ,
78- arguments : DependencyArguments ,
79- ) {
80- let mut graph = self . local_graph ( db) ;
81- let mut node_map = self . local_node_map ( db) ;
82- let source_idx = Self :: allocate_node ( & mut graph, & mut node_map, source) ;
83- let target_idx = Self :: allocate_node ( & mut graph, & mut node_map, target) ;
84- graph. add_edge ( source_idx, target_idx, ( alias, arguments) ) ;
85- self . set_local_graph ( db) . to ( graph) ;
86- self . set_local_node_map ( db) . to ( node_map) ;
61+ pub fn contains_url ( & self , db : & dyn InputDb , url : & Url ) -> bool {
62+ self . node_map ( db) . contains_key ( url)
8763 }
8864
89- pub fn add_remote_dependency (
65+ pub fn add_dependency (
9066 & self ,
9167 db : & mut dyn InputDb ,
9268 source : & Url ,
9369 target : & Url ,
9470 alias : DependencyAlias ,
9571 arguments : DependencyArguments ,
9672 ) {
97- let mut graph = self . remote_graph ( db) ;
98- let mut node_map = self . remote_node_map ( db) ;
73+ let mut graph = self . graph ( db) ;
74+ let mut node_map = self . node_map ( db) ;
9975 let source_idx = Self :: allocate_node ( & mut graph, & mut node_map, source) ;
10076 let target_idx = Self :: allocate_node ( & mut graph, & mut node_map, target) ;
10177 graph. add_edge ( source_idx, target_idx, ( alias, arguments) ) ;
102- self . set_remote_graph ( db) . to ( graph) ;
103- self . set_remote_node_map ( db) . to ( node_map) ;
104- }
105-
106- pub fn ensure_remote_node ( & self , db : & mut dyn InputDb , url : & Url ) {
107- if self . remote_node_map ( db) . contains_key ( url) {
108- return ;
109- }
110- let mut graph = self . remote_graph ( db) ;
111- let mut node_map = self . remote_node_map ( db) ;
112- Self :: allocate_node ( & mut graph, & mut node_map, url) ;
113- self . set_remote_graph ( db) . to ( graph) ;
114- self . set_remote_node_map ( db) . to ( node_map) ;
78+ self . set_graph ( db) . to ( graph) ;
79+ self . set_node_map ( db) . to ( node_map) ;
11580 }
11681
11782 pub fn cyclic_subgraph ( & self , db : & dyn InputDb ) -> DiGraph < Url , EdgeWeight > {
11883 use petgraph:: algo:: tarjan_scc;
11984
120- let graph = self . local_graph ( db) ;
85+ let graph = self . graph ( db) ;
12186 let sccs = tarjan_scc ( & graph) ;
12287
12388 let mut cyclic_nodes = HashSet :: new ( ) ;
@@ -171,8 +136,8 @@ impl DependencyGraph {
171136 }
172137
173138 pub fn dependency_urls ( & self , db : & dyn InputDb , url : & Url ) -> Vec < Url > {
174- let node_map = self . local_node_map ( db) ;
175- let graph = self . local_graph ( db) ;
139+ let node_map = self . node_map ( db) ;
140+ let graph = self . graph ( db) ;
176141
177142 if let Some ( & root) = node_map. get ( url) {
178143 let mut dfs = Dfs :: new ( & graph, root) ;
@@ -188,20 +153,6 @@ impl DependencyGraph {
188153 }
189154 }
190155
191- pub fn add_remote_set ( & self , db : & mut dyn InputDb , local_url : & Url , remote_root : Url ) {
192- self . ensure_remote_node ( db, & remote_root) ;
193- let mut sets = self . remote_sets ( db) ;
194- sets. entry ( local_url. clone ( ) ) . or_default ( ) . push ( remote_root) ;
195- self . set_remote_sets ( db) . to ( sets) ;
196- }
197-
198- pub fn remote_sets_for ( & self , db : & dyn InputDb , local_url : & Url ) -> Vec < Url > {
199- self . remote_sets ( db)
200- . get ( local_url)
201- . cloned ( )
202- . unwrap_or_default ( )
203- }
204-
205156 pub fn register_remote_checkout (
206157 & self ,
207158 db : & mut dyn InputDb ,
0 commit comments