Skip to content

Commit 64934ba

Browse files
committed
Fixed one possible error source when encoding hygiene metadata.
Sadly, this isn't the reason the tests fail.
1 parent 214fb56 commit 64934ba

File tree

4 files changed

+11
-1
lines changed

4 files changed

+11
-1
lines changed

src/librustc/middle/cstore.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,8 @@ pub struct ExternBodyNestedBodies {
253253
pub trait CrateStore {
254254
fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any>;
255255

256+
fn ensure_hygiene_data_loaded(&self);
257+
256258
// access to the metadata loader
257259
fn metadata_loader(&self) -> &MetadataLoader;
258260

@@ -325,6 +327,7 @@ pub struct DummyCrateStore;
325327
impl CrateStore for DummyCrateStore {
326328
fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any>
327329
{ bug!("crate_data_as_rc_any") }
330+
fn ensure_hygiene_data_loaded(&self) { bug!("ensure_hygiene_data_loaded") }
328331
// item info
329332
fn visibility_untracked(&self, def: DefId) -> ty::Visibility { bug!("visibility") }
330333
fn item_generics_cloned_untracked(&self, def: DefId) -> ty::Generics

src/librustc_metadata/cstore_impl.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,12 @@ impl CrateStore for cstore::CStore {
350350
self.get_crate_data(krate)
351351
}
352352

353+
fn ensure_hygiene_data_loaded(&self) {
354+
self.iter_crate_data(|_, metadata| {
355+
(*metadata).imported_hygiene_data();
356+
});
357+
}
358+
353359
fn metadata_loader(&self) -> &MetadataLoader {
354360
&*self.metadata_loader
355361
}

src/librustc_metadata/decoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1271,6 +1271,6 @@ impl<'a, 'tcx> CrateMetadata {
12711271
Some(hygiene::extend_hygiene_data(external_hygiene_data));
12721272
self.hygiene_data_being_decoded.set(false);
12731273

1274-
Ref::map(self.hygiene_data_import_info.borrow(), |d| d.as_ref().unwrap());
1274+
Ref::map(self.hygiene_data_import_info.borrow(), |d| d.as_ref().unwrap())
12751275
}
12761276
}

src/librustc_metadata/encoder.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
324324
}
325325

326326
fn encode_hygiene_data(&mut self) -> Lazy<hygiene::HygieneData> {
327+
self.tcx.sess.cstore.ensure_hygiene_data_loaded();
327328
hygiene::HygieneData::safe_with(|data| self.lazy(data))
328329
}
329330

0 commit comments

Comments
 (0)