debug!("save_work_product_index()");
dep_graph.assert_ignored();
let path = work_products_path(sess);
- file_format::save_in(sess, path, "work product index", |e| {
- encode_work_product_index(&new_work_products, e)
+ file_format::save_in(sess, path, "work product index", |mut e| {
+ encode_work_product_index(&new_work_products, &mut e);
+ e.finish()
});
// We also need to clean out old work-products, as not all of them are
for (id, wp) in previous_work_products.iter() {
if !new_work_products.contains_key(id) {
work_product::delete_workproduct_files(sess, wp);
- debug_assert!(
- wp.saved_file.as_ref().map_or(true, |file_name| {
- !in_incr_comp_dir_sess(sess, &file_name).exists()
- })
- );
+ debug_assert!(!in_incr_comp_dir_sess(sess, &wp.saved_file).exists());
}
}
debug_assert!({
new_work_products
.iter()
- .flat_map(|(_, wp)| wp.saved_file.iter())
- .map(|name| in_incr_comp_dir_sess(sess, name))
+ .map(|(_, wp)| in_incr_comp_dir_sess(sess, &wp.saved_file))
.all(|path| path.exists())
});
}
fn encode_work_product_index(
work_products: &FxHashMap<WorkProductId, WorkProduct>,
encoder: &mut FileEncoder,
-) -> FileEncodeResult {
+) {
let serialized_products: Vec<_> = work_products
.iter()
.map(|(id, work_product)| SerializedWorkProduct {
serialized_products.encode(encoder)
}
-fn encode_query_cache(tcx: TyCtxt<'_>, encoder: &mut FileEncoder) -> FileEncodeResult {
+fn encode_query_cache(tcx: TyCtxt<'_>, encoder: FileEncoder) -> FileEncodeResult {
tcx.sess.time("incr_comp_serialize_result_cache", || tcx.serialize_query_result_cache(encoder))
}
}
};
- if let Err(err) = file_format::write_file_header(&mut encoder, sess.is_nightly_build()) {
- sess.err(&format!(
- "failed to write dependency graph header to `{}`: {}",
- path_buf.display(),
- err
- ));
- return None;
- }
+ file_format::write_file_header(&mut encoder, sess.is_nightly_build());
// First encode the commandline arguments hash
- if let Err(err) = sess.opts.dep_tracking_hash(false).encode(&mut encoder) {
- sess.err(&format!(
- "failed to write dependency graph hash `{}`: {}",
- path_buf.display(),
- err
- ));
- return None;
- }
+ sess.opts.dep_tracking_hash(false).encode(&mut encoder);
Some(DepGraph::new(
&sess.prof,