diff options
| -rw-r--r-- | src/libproc_macro/quote.rs | 3 | ||||
| -rw-r--r-- | src/librustc_metadata/creader.rs | 2 | ||||
| -rw-r--r-- | src/librustc_metadata/cstore_impl.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/base.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 4 |
5 files changed, 9 insertions, 8 deletions
diff --git a/src/libproc_macro/quote.rs b/src/libproc_macro/quote.rs index c9d0bc1405f..4cd822aa9d0 100644 --- a/src/libproc_macro/quote.rs +++ b/src/libproc_macro/quote.rs @@ -85,9 +85,6 @@ impl ProcMacro for Quoter { _: ::syntax_pos::Span, stream: tokenstream::TokenStream) -> tokenstream::TokenStream { - let mut info = cx.current_expansion.mark.expn_info().unwrap(); - info.callee.allow_internal_unstable = true; - cx.current_expansion.mark.set_expn_info(info); ::__internal::set_sess(cx, || TokenStream(stream).quote().0) } } diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs index 6c199145743..1a13335a0e4 100644 --- a/src/librustc_metadata/creader.rs +++ b/src/librustc_metadata/creader.rs @@ -570,7 +570,7 @@ impl<'a> CrateLoader<'a> { name: &str, expand: fn(TokenStream) -> TokenStream) { let expand = SyntaxExtension::ProcMacro( - Box::new(BangProcMacro { inner: expand }), self.edition + Box::new(BangProcMacro { inner: expand }), false, self.edition ); self.extensions.push((Symbol::intern(name), Lrc::new(expand))); } diff --git a/src/librustc_metadata/cstore_impl.rs b/src/librustc_metadata/cstore_impl.rs index b33d97cb1ee..d0e4e54e63d 100644 --- a/src/librustc_metadata/cstore_impl.rs +++ b/src/librustc_metadata/cstore_impl.rs @@ -519,7 +519,7 @@ impl CrateStore for cstore::CStore { } else if data.name == "proc_macro" && self.get_crate_data(id.krate).item_name(id.index) == "quote" { let ext = SyntaxExtension::ProcMacro(Box::new(::proc_macro::__internal::Quoter), - data.root.edition); + true, data.root.edition); return LoadedMacro::ProcMacro(Lrc::new(ext)); } diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index b7f4bc61435..e8fad1a2177 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -597,7 +597,11 @@ pub enum SyntaxExtension { MultiModifier(Box<MultiItemModifier + sync::Sync + sync::Send>), /// A function-like procedural macro. TokenStream -> TokenStream. - ProcMacro(Box<ProcMacro + sync::Sync + sync::Send>, Edition), + ProcMacro( + /* expander: */ Box<ProcMacro + sync::Sync + sync::Send>, + /* allow_internal_unstable: */ bool, + /* edition: */ Edition, + ), /// An attribute-like procedural macro. TokenStream, TokenStream -> TokenStream. /// The first TokenSteam is the attribute, the second is the annotated item. diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index eb26bdc74b5..8ad6e32f42d 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -804,7 +804,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> { kind.dummy(span) } - ProcMacro(ref expandfun, edition) => { + ProcMacro(ref expandfun, allow_internal_unstable, edition) => { if ident.name != keywords::Invalid.name() { let msg = format!("macro {}! expects no ident argument, given '{}'", path, ident); @@ -821,7 +821,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> { // yet, when they do, we should use it here. span: None, // FIXME probably want to follow macro_rules macros here. - allow_internal_unstable: false, + allow_internal_unstable, allow_internal_unsafe: false, edition, }, |
