use rustc::middle::cstore::{CrateSource, CrateStore, DepKind, EncodedMetadata, NativeLibraryKind};
use rustc::middle::exported_symbols::ExportedSymbol;
use rustc::middle::stability::DeprecationEntry;
-use rustc::middle::dependency_format::Linkage;
use rustc::hir::def;
use rustc::hir;
use rustc::session::{CrateDisambiguator, Session};
used_crate_source => { Lrc::new(cdata.source.clone()) }
exported_symbols => {
- let mut syms = cdata.exported_symbols(tcx);
-
- // When linked into a dylib crates don't export their generic symbols,
- // so if that's happening then we can't load upstream monomorphizations
- // from this crate.
- let formats = tcx.dependency_formats(LOCAL_CRATE);
- let remove_generics = formats.iter().any(|(_ty, list)| {
- match list.get(def_id.krate.as_usize() - 1) {
- Some(Linkage::IncludedFromDylib) | Some(Linkage::Dynamic) => true,
- _ => false,
- }
- });
- if remove_generics {
- syms.retain(|(sym, _threshold)| {
- match sym {
- ExportedSymbol::Generic(..) => false,
- _ => return true,
- }
- });
- }
+ let syms = cdata.exported_symbols(tcx);
+
+ // FIXME rust-lang/rust#64319, rust-lang/rust#64872: We want
+ // to block export of generics from dylibs, but we must fix
+ // rust-lang/rust#65890 before we can do that robustly.
Arc::new(syms)
}
let source_file = sess.parse_sess.source_map().new_source_file(source_name, def.body);
let local_span = Span::with_root_ctxt(source_file.start_pos, source_file.end_pos);
let (body, mut errors) = source_file_to_stream(&sess.parse_sess, source_file, None);
- emit_unclosed_delims(&mut errors, &sess.diagnostic());
+ emit_unclosed_delims(&mut errors, &sess.parse_sess);
// Mark the attrs as used
let attrs = data.get_item_attrs(id.index, sess);