metas: RefCell<IndexVec<CrateNum, Option<Lrc<CrateMetadata>>>>,
/// Map from NodeId's of local extern crate statements to crate numbers
extern_mod_crate_map: RefCell<NodeMap<CrateNum>>,
- pub metadata_loader: Box<MetadataLoader>,
+ pub metadata_loader: Box<MetadataLoader + Sync>,
}
impl CStore {
- pub fn new(metadata_loader: Box<MetadataLoader>) -> CStore {
+ pub fn new(metadata_loader: Box<MetadataLoader + Sync>) -> CStore {
CStore {
metas: RefCell::new(IndexVec::new()),
extern_mod_crate_map: RefCell::new(FxHashMap()),
target_features(sess)
}
- fn metadata_loader(&self) -> Box<MetadataLoader> {
+ fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
box metadata::LlvmMetadataLoader
}
fn print_version(&self) {}
fn diagnostics(&self) -> &[(&'static str, &'static str)] { &[] }
- fn metadata_loader(&self) -> Box<MetadataLoader>;
+ fn metadata_loader(&self) -> Box<MetadataLoader + Sync>;
fn provide(&self, _providers: &mut Providers);
fn provide_extern(&self, _providers: &mut Providers);
fn trans_crate<'a, 'tcx>(
pub struct DummyTransCrate;
impl TransCrate for DummyTransCrate {
- fn metadata_loader(&self) -> Box<MetadataLoader> {
+ fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
box DummyMetadataLoader(())
}
}
}
- fn metadata_loader(&self) -> Box<MetadataLoader> {
+ fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
box NoLlvmMetadataLoader
}
struct TheBackend(Box<TransCrate>);
impl TransCrate for TheBackend {
- fn metadata_loader(&self) -> Box<MetadataLoader> {
+ fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
self.0.metadata_loader()
}