about summary refs log tree commit diff
path: root/src/libsyntax_expand/proc_macro.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsyntax_expand/proc_macro.rs')
-rw-r--r--src/libsyntax_expand/proc_macro.rs100
1 files changed, 49 insertions, 51 deletions
diff --git a/src/libsyntax_expand/proc_macro.rs b/src/libsyntax_expand/proc_macro.rs
index 520488c6586..9f42ec13b56 100644
--- a/src/libsyntax_expand/proc_macro.rs
+++ b/src/libsyntax_expand/proc_macro.rs
@@ -13,17 +13,16 @@ use syntax_pos::{Span, DUMMY_SP};
 const EXEC_STRATEGY: pm::bridge::server::SameThread = pm::bridge::server::SameThread;
 
 pub struct BangProcMacro {
-    pub client: pm::bridge::client::Client<
-        fn(pm::TokenStream) -> pm::TokenStream,
-    >,
+    pub client: pm::bridge::client::Client<fn(pm::TokenStream) -> pm::TokenStream>,
 }
 
 impl base::ProcMacro for BangProcMacro {
-    fn expand<'cx>(&self,
-                   ecx: &'cx mut ExtCtxt<'_>,
-                   span: Span,
-                   input: TokenStream)
-                   -> TokenStream {
+    fn expand<'cx>(
+        &self,
+        ecx: &'cx mut ExtCtxt<'_>,
+        span: Span,
+        input: TokenStream,
+    ) -> TokenStream {
         let server = proc_macro_server::Rustc::new(ecx);
         match self.client.run(&EXEC_STRATEGY, server, input) {
             Ok(stream) => stream,
@@ -46,12 +45,13 @@ pub struct AttrProcMacro {
 }
 
 impl base::AttrProcMacro for AttrProcMacro {
-    fn expand<'cx>(&self,
-                   ecx: &'cx mut ExtCtxt<'_>,
-                   span: Span,
-                   annotation: TokenStream,
-                   annotated: TokenStream)
-                   -> TokenStream {
+    fn expand<'cx>(
+        &self,
+        ecx: &'cx mut ExtCtxt<'_>,
+        span: Span,
+        annotation: TokenStream,
+        annotated: TokenStream,
+    ) -> TokenStream {
         let server = proc_macro_server::Rustc::new(ecx);
         match self.client.run(&EXEC_STRATEGY, server, annotation, annotated) {
             Ok(stream) => stream,
@@ -74,40 +74,44 @@ pub struct ProcMacroDerive {
 }
 
 impl MultiItemModifier for ProcMacroDerive {
-    fn expand(&self,
-              ecx: &mut ExtCtxt<'_>,
-              span: Span,
-              _meta_item: &ast::MetaItem,
-              item: Annotatable)
-              -> Vec<Annotatable> {
+    fn expand(
+        &self,
+        ecx: &mut ExtCtxt<'_>,
+        span: Span,
+        _meta_item: &ast::MetaItem,
+        item: Annotatable,
+    ) -> Vec<Annotatable> {
         let item = match item {
-            Annotatable::Arm(..) |
-            Annotatable::Field(..) |
-            Annotatable::FieldPat(..) |
-            Annotatable::GenericParam(..) |
-            Annotatable::Param(..) |
-            Annotatable::StructField(..) |
-            Annotatable::Variant(..)
-                => panic!("unexpected annotatable"),
+            Annotatable::Arm(..)
+            | Annotatable::Field(..)
+            | Annotatable::FieldPat(..)
+            | Annotatable::GenericParam(..)
+            | Annotatable::Param(..)
+            | Annotatable::StructField(..)
+            | Annotatable::Variant(..) => panic!("unexpected annotatable"),
             Annotatable::Item(item) => item,
-            Annotatable::ImplItem(_) |
-            Annotatable::TraitItem(_) |
-            Annotatable::ForeignItem(_) |
-            Annotatable::Stmt(_) |
-            Annotatable::Expr(_) => {
-                ecx.span_err(span, "proc-macro derives may only be \
-                                    applied to a struct, enum, or union");
-                return Vec::new()
+            Annotatable::ImplItem(_)
+            | Annotatable::TraitItem(_)
+            | Annotatable::ForeignItem(_)
+            | Annotatable::Stmt(_)
+            | Annotatable::Expr(_) => {
+                ecx.span_err(
+                    span,
+                    "proc-macro derives may only be \
+                                    applied to a struct, enum, or union",
+                );
+                return Vec::new();
             }
         };
         match item.kind {
-            ItemKind::Struct(..) |
-            ItemKind::Enum(..) |
-            ItemKind::Union(..) => {},
+            ItemKind::Struct(..) | ItemKind::Enum(..) | ItemKind::Union(..) => {}
             _ => {
-                ecx.span_err(span, "proc-macro derives may only be \
-                                    applied to a struct, enum, or union");
-                return Vec::new()
+                ecx.span_err(
+                    span,
+                    "proc-macro derives may only be \
+                                    applied to a struct, enum, or union",
+                );
+                return Vec::new();
             }
         }
 
@@ -132,19 +136,14 @@ impl MultiItemModifier for ProcMacroDerive {
         let error_count_before = ecx.parse_sess.span_diagnostic.err_count();
         let msg = "proc-macro derive produced unparseable tokens";
 
-        let mut parser = rustc_parse::stream_to_parser(
-            ecx.parse_sess,
-            stream,
-            Some("proc-macro derive"),
-        );
+        let mut parser =
+            rustc_parse::stream_to_parser(ecx.parse_sess, stream, Some("proc-macro derive"));
         let mut items = vec![];
 
         loop {
             match parser.parse_item() {
                 Ok(None) => break,
-                Ok(Some(item)) => {
-                    items.push(Annotatable::Item(item))
-                }
+                Ok(Some(item)) => items.push(Annotatable::Item(item)),
                 Err(mut err) => {
                     // FIXME: handle this better
                     err.cancel();
@@ -154,7 +153,6 @@ impl MultiItemModifier for ProcMacroDerive {
             }
         }
 
-
         // fail if there have been errors emitted
         if ecx.parse_sess.span_diagnostic.err_count() > error_count_before {
             ecx.struct_span_fatal(span, msg).emit();