]> git.lizzy.rs Git - rust.git/commitdiff
Export the plugin registrar from proc-macro crates (and not much else)
authorMichael Woerister <michaelwoerister@posteo.net>
Fri, 2 Dec 2016 23:00:41 +0000 (18:00 -0500)
committerMichael Woerister <michaelwoerister@posteo.net>
Mon, 5 Dec 2016 16:05:25 +0000 (11:05 -0500)
src/librustc_trans/back/symbol_export.rs

index 2290cb0f48785089033b5aa5f05675f83a2a9329..f99f543d9b7dfa9c025c4785736956008c943ef0 100644 (file)
@@ -60,6 +60,14 @@ pub fn compute_from<'a, 'tcx>(scx: &SharedCrateContext<'a, 'tcx>,
             local_crate.push(("main".to_string(), SymbolExportLevel::C));
         }
 
+        if let Some(id) = scx.sess().derive_registrar_fn.get() {
+            let svh = &scx.link_meta().crate_hash;
+            let def_id = scx.tcx().map.local_def_id(id);
+            let idx = def_id.index;
+            let registrar = scx.sess().generate_derive_registrar_symbol(svh, idx);
+            local_crate.push((registrar, SymbolExportLevel::C));
+        }
+
         if scx.sess().crate_types.borrow().contains(&config::CrateTypeDylib) {
             local_crate.push((scx.metadata_symbol_name(),
                               SymbolExportLevel::Rust));
@@ -135,8 +143,8 @@ pub fn crate_export_threshold(crate_type: config::CrateType)
     match crate_type {
         config::CrateTypeExecutable |
         config::CrateTypeStaticlib  |
-        config::CrateTypeCdylib     => SymbolExportLevel::C,
         config::CrateTypeProcMacro  |
+        config::CrateTypeCdylib     => SymbolExportLevel::C,
         config::CrateTypeRlib       |
         config::CrateTypeMetadata   |
         config::CrateTypeDylib      => SymbolExportLevel::Rust,