diff options
| author | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-10-18 05:33:50 +0000 |
|---|---|---|
| committer | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-10-19 10:05:03 +0000 |
| commit | b283aaf0ff74db93162b402e627f3b4ed7fb7d4e (patch) | |
| tree | 27bc4c954fde9bc666a97cb2c407c4603991c28d /src/librustc_metadata | |
| parent | 0c429872a32c3005cf2b347025163361218634a4 (diff) | |
| download | rust-b283aaf0ff74db93162b402e627f3b4ed7fb7d4e.tar.gz rust-b283aaf0ff74db93162b402e627f3b4ed7fb7d4e.zip | |
Future proof `#[no_link]`.
Diffstat (limited to 'src/librustc_metadata')
| -rw-r--r-- | src/librustc_metadata/macro_import.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/librustc_metadata/macro_import.rs b/src/librustc_metadata/macro_import.rs index 3b1b2a4cd27..41e14ea9f40 100644 --- a/src/librustc_metadata/macro_import.rs +++ b/src/librustc_metadata/macro_import.rs @@ -52,6 +52,7 @@ impl<'a> CrateLoader<'a> { // Parse the attributes relating to macros. let mut import = ImportSelection::Some(FnvHashMap()); let mut reexport = FnvHashMap(); + let mut no_link = false; for attr in &extern_crate.attrs { let mut used = true; @@ -87,6 +88,7 @@ impl<'a> CrateLoader<'a> { } } } + "no_link" => no_link = true, _ => used = false, } if used { @@ -94,17 +96,22 @@ impl<'a> CrateLoader<'a> { } } - self.load_macros(extern_crate, allows_macros, import, reexport) + self.load_macros(extern_crate, allows_macros, import, reexport, no_link) } fn load_macros<'b>(&mut self, vi: &ast::Item, allows_macros: bool, import: ImportSelection, - reexport: MacroSelection) + reexport: MacroSelection, + no_link: bool) -> Vec<LoadedMacro> { if let ImportSelection::Some(ref sel) = import { if sel.is_empty() && reexport.is_empty() { + // Make sure we can read macros from `#[no_link]` crates. + if no_link { + self.creader.read_macros(vi); + } return Vec::new(); } } |
