about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-11-24 18:16:43 +0000
committerbors <bors@rust-lang.org>2019-11-24 18:16:43 +0000
commit412f43ac5b4ae8c3599e71c6972112e9be4758fa (patch)
tree7f16e3e176d04fdf5d57e209a0aececa09fd57d8 /src/libsyntax_ext
parent5a1d028d4c8fc15473dc10473c38df162daa7b41 (diff)
parentf89e6c881175503fd96a21e77691955ec90b5274 (diff)
downloadrust-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.rs1
-rw-r--r--src/libsyntax_ext/plugin_macro_defs.rs58
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);
-    }
-}