pub parse_sess: ParseSess,
/// For a library crate, this is always none
pub entry_fn: Once<Option<(NodeId, Span, config::EntryFnType)>>,
- pub plugin_registrar_fn: Cell<Option<ast::NodeId>>,
- pub derive_registrar_fn: Cell<Option<ast::NodeId>>,
+ pub plugin_registrar_fn: Once<Option<ast::NodeId>>,
+ pub derive_registrar_fn: Once<Option<ast::NodeId>>,
pub default_sysroot: Option<PathBuf>,
/// The name of the root source file of the crate, in the local file system.
/// `None` means that there is no source file.
parse_sess: p_s,
// For a library crate, this is always none
entry_fn: Once::new(),
- plugin_registrar_fn: Cell::new(None),
- derive_registrar_fn: Cell::new(None),
+ plugin_registrar_fn: Once::new(),
+ derive_registrar_fn: Once::new(),
default_sysroot,
local_crate_source_file,
working_dir,
})
.collect();
- if let Some(id) = tcx.sess.derive_registrar_fn.get() {
+ if let Some(id) = *tcx.sess.derive_registrar_fn.get() {
let def_id = tcx.hir.local_def_id(id);
reachable_non_generics.insert(def_id, SymbolExportLevel::C);
}
- if let Some(id) = tcx.sess.plugin_registrar_fn.get() {
+ if let Some(id) = *tcx.sess.plugin_registrar_fn.get() {
let def_id = tcx.hir.local_def_id(id);
reachable_non_generics.insert(def_id, SymbolExportLevel::C);
}
let node_id = tcx.hir.as_local_node_id(def_id);
if let Some(id) = node_id {
- if tcx.sess.plugin_registrar_fn.get() == Some(id) {
+ if *tcx.sess.plugin_registrar_fn.get() == Some(id) {
let disambiguator = tcx.sess.local_crate_disambiguator();
return tcx.sess.generate_plugin_registrar_symbol(disambiguator);
}
- if tcx.sess.derive_registrar_fn.get() == Some(id) {
+ if *tcx.sess.derive_registrar_fn.get() == Some(id) {
let disambiguator = tcx.sess.local_crate_disambiguator();
return tcx.sess.generate_derive_registrar_symbol(disambiguator);
}