diff options
| author | Corey Farwell <coreyf@rwell.org> | 2017-03-02 14:53:46 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-03-02 14:53:46 -0500 |
| commit | c883f4f584bf55ec3c3d0bbd22957a7e6654e3b9 (patch) | |
| tree | 4f88f98fa7272576b878096fd4045c332599a4be /src/librustc_metadata | |
| parent | 0536fd6396133189fb4a41377d3972cd312078a0 (diff) | |
| parent | 2fcbb48c727e82ea8751d6476d86fd3c6fe16b42 (diff) | |
| download | rust-c883f4f584bf55ec3c3d0bbd22957a7e6654e3b9.tar.gz rust-c883f4f584bf55ec3c3d0bbd22957a7e6654e3b9.zip | |
Rollup merge of #40129 - abonander:proc_macro_bang, r=jseyfried
Implement function-like procedural macros ( `#[proc_macro]`) Adds the `#[proc_macro]` attribute, which expects bare functions of the kind `fn(TokenStream) -> TokenStream`, which can be invoked like `my_macro!()`. cc rust-lang/rfcs#1913, #38356 r? @jseyfried cc @nrc
Diffstat (limited to 'src/librustc_metadata')
| -rw-r--r-- | src/librustc_metadata/creader.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs index 4477488f6cb..49dcffb4830 100644 --- a/src/librustc_metadata/creader.rs +++ b/src/librustc_metadata/creader.rs @@ -586,7 +586,7 @@ impl<'a> CrateLoader<'a> { use proc_macro::__internal::Registry; use rustc_back::dynamic_lib::DynamicLibrary; use syntax_ext::deriving::custom::ProcMacroDerive; - use syntax_ext::proc_macro_impl::AttrProcMacro; + use syntax_ext::proc_macro_impl::{AttrProcMacro, BangProcMacro}; let path = match dylib { Some(dylib) => dylib, @@ -630,6 +630,15 @@ impl<'a> CrateLoader<'a> { ); self.0.push((Symbol::intern(name), Rc::new(expand))); } + + fn register_bang_proc_macro(&mut self, + name: &str, + expand: fn(TokenStream) -> TokenStream) { + let expand = SyntaxExtension::ProcMacro( + Box::new(BangProcMacro { inner: expand }) + ); + self.0.push((Symbol::intern(name), Rc::new(expand))); + } } let mut my_registrar = MyRegistrar(Vec::new()); |
