From aa69cbde8279cd90457454c3b3f40a36e8a79dff Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Fri, 2 Jan 2015 12:50:45 -0800 Subject: Allow selective macro import --- src/libsyntax/ast.rs | 1 + src/libsyntax/ext/base.rs | 6 ++++-- src/libsyntax/ext/expand.rs | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index e34060a73c1..0f90e31c17e 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -1709,6 +1709,7 @@ pub struct MacroDef { pub span: Span, pub imported_from: Option, pub export: bool, + pub use_locally: bool, pub body: Vec, } diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 815159e94c8..91ae7396ea4 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -574,8 +574,10 @@ impl<'a> ExtCtxt<'a> { if def.export { self.exported_macros.push(def.clone()); } - let ext = macro_rules::compile(self, &def); - self.syntax_env.insert(def.ident.name, ext); + if def.use_locally { + let ext = macro_rules::compile(self, &def); + self.syntax_env.insert(def.ident.name, ext); + } } /// Emit `msg` attached to `sp`, and stop compilation immediately. diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 6c2b0610fa0..d3f2e0ea095 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -636,6 +636,7 @@ pub fn expand_item_mac(it: P, span: it.span, imported_from: None, export: attr::contains_name(it.attrs.as_slice(), "macro_export"), + use_locally: true, body: tts, }; fld.cx.insert_macro(def); -- cgit 1.4.1-3-g733a5