diff options
| author | bors <bors@rust-lang.org> | 2016-11-10 05:10:04 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-10 05:10:04 -0800 |
| commit | 187d9896028f1d0b79db3010f2a546334212838b (patch) | |
| tree | 0ce3fc96467cc64c63802be7e325e4e52a945d11 /src/libsyntax_ext | |
| parent | ab03f855221d83ad13120b309506488f4a34cb0f (diff) | |
| parent | f35eff2c57ccbeab2b4775dddbebc9bdc8e0e785 (diff) | |
Auto merge of #37542 - jseyfried:custom_derive_reexports, r=nrc
Support `#[macro_reexport]`ing custom derives This is gated behind `#![feature(macro_reexport)]` and `#![feature(proc_macro)]`. r? @nrc
Diffstat (limited to 'src/libsyntax_ext')
| -rw-r--r-- | src/libsyntax_ext/deriving/mod.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libsyntax_ext/deriving/mod.rs b/src/libsyntax_ext/deriving/mod.rs index c2bfead5686..b1d473820f7 100644 --- a/src/libsyntax_ext/deriving/mod.rs +++ b/src/libsyntax_ext/deriving/mod.rs @@ -12,10 +12,10 @@ use syntax::ast::{self, MetaItem}; use syntax::attr::HasAttrs; +use syntax::codemap; use syntax::ext::base::{Annotatable, ExtCtxt, SyntaxExtension}; use syntax::ext::build::AstBuilder; -use syntax::feature_gate; -use syntax::codemap; +use syntax::feature_gate::{self, emit_feature_err}; use syntax::parse::token::{intern, intern_and_get_ident}; use syntax::ptr::P; use syntax_pos::Span; @@ -220,6 +220,12 @@ pub fn expand_derive(cx: &mut ExtCtxt, .filter(|&(_, ref name)| !is_builtin_trait(&name.name().unwrap())) .next(); if let Some((i, titem)) = macros_11_derive { + if !cx.ecfg.features.unwrap().proc_macro { + let issue = feature_gate::GateIssue::Language; + let msg = "custom derive macros are experimentally supported"; + emit_feature_err(cx.parse_sess, "proc_macro", titem.span, issue, msg); + } + let tname = ast::Ident::with_empty_ctxt(intern(&titem.name().unwrap())); let path = ast::Path::from_ident(titem.span, tname); let ext = cx.resolver.resolve_macro(cx.current_expansion.mark, &path, false).unwrap(); |
