diff options
| author | bors <bors@rust-lang.org> | 2019-11-24 18:16:43 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-11-24 18:16:43 +0000 |
| commit | 412f43ac5b4ae8c3599e71c6972112e9be4758fa (patch) | |
| tree | 7f16e3e176d04fdf5d57e209a0aececa09fd57d8 /src/libsyntax_ext | |
| parent | 5a1d028d4c8fc15473dc10473c38df162daa7b41 (diff) | |
| parent | f89e6c881175503fd96a21e77691955ec90b5274 (diff) | |
| download | rust-412f43ac5b4ae8c3599e71c6972112e9be4758fa.tar.gz rust-412f43ac5b4ae8c3599e71c6972112e9be4758fa.zip | |
Auto merge of #66647 - petrochenkov:nosynt, r=Centril
rustc_plugin: Remove support for syntactic plugins This part of the plugin interface was successfully replaced by token-based procedural macros in theory and in practice. cc https://github.com/rust-lang/rust/issues/29597 cc https://github.com/rust-lang/rust/pull/64675 r? @Centril
Diffstat (limited to 'src/libsyntax_ext')
| -rw-r--r-- | src/libsyntax_ext/lib.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax_ext/plugin_macro_defs.rs | 58 |
2 files changed, 0 insertions, 59 deletions
diff --git a/src/libsyntax_ext/lib.rs b/src/libsyntax_ext/lib.rs index 07fdec05046..b9287d2fe70 100644 --- a/src/libsyntax_ext/lib.rs +++ b/src/libsyntax_ext/lib.rs @@ -38,7 +38,6 @@ mod trace_macros; mod util; pub mod cmdline_attrs; -pub mod plugin_macro_defs; pub mod proc_macro_harness; pub mod standard_library_imports; pub mod test_harness; diff --git a/src/libsyntax_ext/plugin_macro_defs.rs b/src/libsyntax_ext/plugin_macro_defs.rs deleted file mode 100644 index cee1b97af55..00000000000 --- a/src/libsyntax_ext/plugin_macro_defs.rs +++ /dev/null @@ -1,58 +0,0 @@ -//! Each macro must have a definition, so `#[plugin]` attributes -//! inject a dummy `macro_rules` item for each macro they define. - -use syntax::ast::*; -use syntax::attr; -use syntax::edition::Edition; -use syntax::ptr::P; -use syntax::source_map::respan; -use syntax::symbol::sym; -use syntax::token; -use syntax::tokenstream::*; -use syntax_expand::base::{Resolver, NamedSyntaxExtension}; -use syntax_pos::{Span, DUMMY_SP}; -use syntax_pos::hygiene::{ExpnData, ExpnKind, AstPass}; - -use std::mem; - -fn plugin_macro_def(name: Name, span: Span) -> P<Item> { - let rustc_builtin_macro = attr::mk_attr_outer( - attr::mk_word_item(Ident::new(sym::rustc_builtin_macro, span))); - - let parens: TreeAndJoint = TokenTree::Delimited( - DelimSpan::from_single(span), token::Paren, TokenStream::default() - ).into(); - let trees = vec![parens.clone(), TokenTree::token(token::FatArrow, span).into(), parens]; - - P(Item { - ident: Ident::new(name, span), - attrs: vec![rustc_builtin_macro], - id: DUMMY_NODE_ID, - kind: ItemKind::MacroDef(MacroDef { tokens: TokenStream::new(trees), legacy: true }), - vis: respan(span, VisibilityKind::Inherited), - span: span, - tokens: None, - }) -} - -pub fn inject( - krate: &mut Crate, - resolver: &mut dyn Resolver, - named_exts: Vec<NamedSyntaxExtension>, - edition: Edition, -) { - if !named_exts.is_empty() { - let mut extra_items = Vec::new(); - let span = DUMMY_SP.fresh_expansion(ExpnData::allow_unstable( - ExpnKind::AstPass(AstPass::PluginMacroDefs), DUMMY_SP, edition, - [sym::rustc_attrs][..].into(), - )); - for (name, ext) in named_exts { - resolver.register_builtin_macro(Ident::with_dummy_span(name), ext); - extra_items.push(plugin_macro_def(name, span)); - } - // The `macro_rules` items must be inserted before any other items. - mem::swap(&mut extra_items, &mut krate.module.items); - krate.module.items.append(&mut extra_items); - } -} |
