diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index 97b73fac1a42..8d3215e69cd2 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -71,8 +71,8 @@ pub struct Session { pub parse_sess: ParseSess, /// For a library crate, this is always none pub entry_fn: Once>, - pub plugin_registrar_fn: Cell>, - pub derive_registrar_fn: Cell>, + pub plugin_registrar_fn: Once>, + pub derive_registrar_fn: Once>, pub default_sysroot: Option, /// The name of the root source file of the crate, in the local file system. /// `None` means that there is no source file. @@ -1094,8 +1094,8 @@ pub fn build_session_( 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, diff --git a/src/librustc_trans/back/symbol_export.rs b/src/librustc_trans/back/symbol_export.rs index acd2a7657307..965a34eccb86 100644 --- a/src/librustc_trans/back/symbol_export.rs +++ b/src/librustc_trans/back/symbol_export.rs @@ -157,12 +157,12 @@ fn reachable_non_generics_provider<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, }) .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); } diff --git a/src/librustc_trans_utils/symbol_names.rs b/src/librustc_trans_utils/symbol_names.rs index af174f7ce851..f3b7326b2107 100644 --- a/src/librustc_trans_utils/symbol_names.rs +++ b/src/librustc_trans_utils/symbol_names.rs @@ -244,11 +244,11 @@ fn compute_symbol_name<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, instance: Instance 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); }