diff options
| author | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-11-05 20:30:40 +0000 |
|---|---|---|
| committer | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-11-10 11:19:34 +0000 |
| commit | 0a998b86e977912dfabd4fddb3c7efe87accf2c2 (patch) | |
| tree | 317c4bdf9d17873a49bc449fa7217273c2a6e7b0 /src/libsyntax_ext | |
| parent | ad5345239850a6d9f16ad30e7f2d220ac1c0ae9d (diff) | |
| download | rust-0a998b86e977912dfabd4fddb3c7efe87accf2c2.tar.gz rust-0a998b86e977912dfabd4fddb3c7efe87accf2c2.zip | |
Support `#[macro_reexport]`ing custom derives.
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(); |
