Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 1ead92d

Browse files
committed
call EncodedMetadata::empty in case of MetadataKind::None
1 parent c8e49e4 commit 1ead92d

File tree

2 files changed

+36
-25
lines changed

2 files changed

+36
-25
lines changed

compiler/rustc_metadata/src/fs.rs

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -68,37 +68,43 @@ pub fn encode_and_write_metadata(
6868
.unwrap_or_else(|err| tcx.sess.fatal(&format!("couldn't create a temp dir: {}", err)));
6969
let metadata_tmpdir = MaybeTempDir::new(metadata_tmpdir, tcx.sess.opts.cg.save_temps);
7070
let metadata_filename = metadata_tmpdir.as_ref().join(METADATA_FILENAME);
71-
match metadata_kind {
71+
let metadata = match metadata_kind {
7272
MetadataKind::None => {
73-
let _ = emit_metadata(tcx.sess, &[], &metadata_tmpdir);
73+
if tcx.sess.opts.json_artifact_notifications {
74+
tcx.sess
75+
.parse_sess
76+
.span_diagnostic
77+
.emit_artifact_notification(&out_filename, "metadata");
78+
}
79+
EncodedMetadata::empty()
7480
}
7581
MetadataKind::Uncompressed | MetadataKind::Compressed => {
76-
encode_metadata(tcx, &metadata_filename)
82+
encode_metadata(tcx, &metadata_filename);
83+
84+
let _prof_timer = tcx.sess.prof.generic_activity("write_crate_metadata");
85+
86+
let need_metadata_file = tcx.sess.opts.output_types.contains_key(&OutputType::Metadata);
87+
let (metadata_filename, metadata_tmpdir) = if need_metadata_file {
88+
if let Err(e) = non_durable_rename(&metadata_filename, &out_filename) {
89+
tcx.sess.fatal(&format!("failed to write {}: {}", out_filename.display(), e));
90+
}
91+
if tcx.sess.opts.json_artifact_notifications {
92+
tcx.sess
93+
.parse_sess
94+
.span_diagnostic
95+
.emit_artifact_notification(&out_filename, "metadata");
96+
}
97+
(out_filename, None)
98+
} else {
99+
(metadata_filename, Some(metadata_tmpdir))
100+
};
101+
102+
EncodedMetadata::from_path(metadata_filename, metadata_tmpdir).unwrap_or_else(|e| {
103+
tcx.sess.fatal(&format!("failed to create encoded metadata from file: {}", e))
104+
})
77105
}
78106
};
79107

80-
let _prof_timer = tcx.sess.prof.generic_activity("write_crate_metadata");
81-
82-
let need_metadata_file = tcx.sess.opts.output_types.contains_key(&OutputType::Metadata);
83-
let (metadata_filename, metadata_tmpdir) = if need_metadata_file {
84-
if let Err(e) = non_durable_rename(&metadata_filename, &out_filename) {
85-
tcx.sess.fatal(&format!("failed to write {}: {}", out_filename.display(), e));
86-
}
87-
if tcx.sess.opts.json_artifact_notifications {
88-
tcx.sess
89-
.parse_sess
90-
.span_diagnostic
91-
.emit_artifact_notification(&out_filename, "metadata");
92-
}
93-
(out_filename, None)
94-
} else {
95-
(metadata_filename, Some(metadata_tmpdir))
96-
};
97-
let metadata =
98-
EncodedMetadata::from_path(metadata_filename, metadata_tmpdir).unwrap_or_else(|e| {
99-
tcx.sess.fatal(&format!("failed to create encoded metadata from file: {}", e))
100-
});
101-
102108
let need_metadata_module = metadata_kind == MetadataKind::Compressed;
103109

104110
(metadata, need_metadata_module)

compiler/rustc_metadata/src/rmeta/encoder.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2158,6 +2158,11 @@ impl EncodedMetadata {
21582158
Ok(Self { mmap, _temp_dir: temp_dir })
21592159
}
21602160

2161+
#[inline]
2162+
pub fn empty() -> Self {
2163+
Self { mmap: None, _temp_dir: None }
2164+
}
2165+
21612166
#[inline]
21622167
pub fn raw_data(&self) -> &[u8] {
21632168
self.mmap.as_ref().map(|mmap| mmap.as_ref()).unwrap_or_default()

0 commit comments

Comments
 (0)