Store unit dependencies directly into Context
authorDirkjan Ochtman <dirkjan@ochtman.nl>
Sun, 29 Apr 2018 19:55:57 +0000 (21:55 +0200)
committerDirkjan Ochtman <dirkjan@ochtman.nl>
Wed, 2 May 2018 08:03:35 +0000 (10:03 +0200)
src/cargo/core/compiler/context/mod.rs
src/cargo/core/compiler/context/unit_dependencies.rs

index 1a8230323762d29958ca0191d4a26e4150c7dffc..a0e166860eac1be727989ef0ef9e2e22035a7b28 100644 (file)
@@ -266,8 +266,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
             None => None,
         };
 
-        let deps = build_unit_dependencies(units, self.bcx)?;
-        self.unit_dependencies = deps;
+        build_unit_dependencies(units, self.bcx, &mut self.unit_dependencies)?;
         let files = CompilationFiles::new(
             units,
             host_layout,
index 08d7ed41066d51f56dbc7e08dff854919f4025f4..ee66f62d97026831abe82461eb1b66e68e03b50a 100644 (file)
@@ -26,8 +26,8 @@ use CargoResult;
 pub fn build_unit_dependencies<'a, 'cfg>(
     roots: &[Unit<'a>],
     bcx: &BuildContext<'a, 'cfg>,
-) -> CargoResult<HashMap<Unit<'a>, Vec<Unit<'a>>>> {
-    let mut deps = HashMap::new();
+    mut deps: &mut HashMap<Unit<'a>, Vec<Unit<'a>>>,
+) -> CargoResult<()> {
     for unit in roots.iter() {
         // Dependencies of tests/benches should not have `panic` set.
         // We check the global test mode to see if we are running in `cargo
@@ -43,7 +43,7 @@ pub fn build_unit_dependencies<'a, 'cfg>(
         deps_of(unit, bcx, &mut deps, profile_for)?;
     }
 
-    Ok(deps)
+    Ok(())
 }
 
 fn deps_of<'a, 'b, 'cfg>(