@@ -68,11 +68,9 @@ pub fn encode_and_write_metadata(
68
68
. unwrap_or_else ( |err| tcx. sess . fatal ( & format ! ( "couldn't create a temp dir: {}" , err) ) ) ;
69
69
let metadata_tmpdir = MaybeTempDir :: new ( metadata_tmpdir, tcx. sess . opts . cg . save_temps ) ;
70
70
let metadata_filename = metadata_tmpdir. as_ref ( ) . join ( METADATA_FILENAME ) ;
71
- let metadata = match metadata_kind {
71
+ match metadata_kind {
72
72
MetadataKind :: None => {
73
- let metadata = EncodedMetadata :: new ( ) ;
74
- let _ = emit_metadata ( tcx. sess , metadata. raw_data ( ) , & metadata_tmpdir) ;
75
- metadata
73
+ let _ = emit_metadata ( tcx. sess , & [ ] , & metadata_tmpdir) ;
76
74
}
77
75
MetadataKind :: Uncompressed | MetadataKind :: Compressed => {
78
76
encode_metadata ( tcx, & metadata_filename)
@@ -82,7 +80,7 @@ pub fn encode_and_write_metadata(
82
80
let _prof_timer = tcx. sess . prof . generic_activity ( "write_crate_metadata" ) ;
83
81
84
82
let need_metadata_file = tcx. sess . opts . output_types . contains_key ( & OutputType :: Metadata ) ;
85
- if need_metadata_file {
83
+ let metadata_filename = if need_metadata_file {
86
84
if let Err ( e) = non_durable_rename ( & metadata_filename, & out_filename) {
87
85
tcx. sess . fatal ( & format ! ( "failed to write {}: {}" , out_filename. display( ) , e) ) ;
88
86
}
@@ -92,7 +90,12 @@ pub fn encode_and_write_metadata(
92
90
. span_diagnostic
93
91
. emit_artifact_notification ( & out_filename, "metadata" ) ;
94
92
}
95
- }
93
+ out_filename
94
+ } else {
95
+ metadata_filename
96
+ } ;
97
+ let raw_data = std:: fs:: read ( metadata_filename) . unwrap ( ) ;
98
+ let metadata = EncodedMetadata :: from_raw_data ( raw_data) ;
96
99
97
100
let need_metadata_module = metadata_kind == MetadataKind :: Compressed ;
98
101
0 commit comments