about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-08-20 02:26:40 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-08-27 00:37:13 +0300
commit32e5acb3eba7a92029488b9684d7bb27bc716294 (patch)
tree1f6a56126f5967fd44bf6b579bc9641bbb95a22d /src/libsyntax_ext
parent9b91b9c10e3c87ed333a1e34c4f46ed68f1eee06 (diff)
downloadrust-32e5acb3eba7a92029488b9684d7bb27bc716294.tar.gz
rust-32e5acb3eba7a92029488b9684d7bb27bc716294.zip
proc_macro: Turn `quote` into a regular built-in macro
Previously in was implemented using a special hack in the metadata loader
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/lib.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libsyntax_ext/lib.rs b/src/libsyntax_ext/lib.rs
index 4add2261c6c..1a617691662 100644
--- a/src/libsyntax_ext/lib.rs
+++ b/src/libsyntax_ext/lib.rs
@@ -7,13 +7,18 @@
 #![feature(decl_macro)]
 #![feature(mem_take)]
 #![feature(nll)]
+#![feature(proc_macro_internals)]
+#![feature(proc_macro_quote)]
 #![feature(rustc_diagnostic_macros)]
 
+extern crate proc_macro;
+
 use crate::deriving::*;
 
 use syntax::ast::Ident;
 use syntax::edition::Edition;
 use syntax::ext::base::{SyntaxExtension, SyntaxExtensionKind, MacroExpanderFn};
+use syntax::ext::proc_macro::BangProcMacro;
 use syntax::symbol::sym;
 
 mod error_codes;
@@ -100,4 +105,7 @@ pub fn register_builtin_macros(resolver: &mut dyn syntax::ext::base::Resolver, e
         RustcDecodable: decodable::expand_deriving_rustc_decodable,
         RustcEncodable: encodable::expand_deriving_rustc_encodable,
     }
+
+    let client = proc_macro::bridge::client::Client::expand1(proc_macro::quote);
+    register(sym::quote, SyntaxExtensionKind::Bang(Box::new(BangProcMacro { client })));
 }