about summary refs log tree commit diff
path: root/library/stdarch/crates/assert-instr-macro/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2018-09-06 16:54:14 -0700
committerGitHub <noreply@github.com>2018-09-06 16:54:14 -0700
commit469af4ef9b2b2a1c41072574e5a797e31583b896 (patch)
tree23f2a7c7b8866d05a7bc413e10f18d1cfe976911 /library/stdarch/crates/assert-instr-macro/src
parent274b91093d0f4a8a08050a9b54a7bbf547549447 (diff)
downloadrust-469af4ef9b2b2a1c41072574e5a797e31583b896.tar.gz
rust-469af4ef9b2b2a1c41072574e5a797e31583b896.zip
Update to syn 0.15 (#564)
Diffstat (limited to 'library/stdarch/crates/assert-instr-macro/src')
-rw-r--r--library/stdarch/crates/assert-instr-macro/src/lib.rs37
1 files changed, 17 insertions, 20 deletions
diff --git a/library/stdarch/crates/assert-instr-macro/src/lib.rs b/library/stdarch/crates/assert-instr-macro/src/lib.rs
index e5575e85a3a..6229f2c48da 100644
--- a/library/stdarch/crates/assert-instr-macro/src/lib.rs
+++ b/library/stdarch/crates/assert-instr-macro/src/lib.rs
@@ -12,7 +12,6 @@ extern crate proc_macro;
 extern crate proc_macro2;
 #[macro_use]
 extern crate quote;
-#[macro_use]
 extern crate syn;
 
 use proc_macro2::TokenStream;
@@ -150,25 +149,23 @@ struct Invoc {
     args: Vec<(syn::Ident, syn::Expr)>,
 }
 
-impl syn::synom::Synom for Invoc {
-    named!(parse -> Self, do_parse!(
-        instr: alt!(
-            map!(syn!(syn::Ident), |s| s.to_string())
-            |
-            map!(syn!(syn::LitStr), |s| s.value())
-        ) >>
-        args: many0!(do_parse!(
-            syn!(syn::token::Comma) >>
-            name: syn!(syn::Ident) >>
-            syn!(syn::token::Eq) >>
-            expr: syn!(syn::Expr) >>
-            (name, expr)
-        )) >>
-        (Invoc {
-            instr,
-            args,
-        })
-    ));
+impl syn::parse::Parse for Invoc {
+    fn parse(input: syn::parse::ParseStream) -> syn::parse::Result<Self> {
+        use syn::Token;
+
+        let instr = match input.parse::<syn::Ident>() {
+            Ok(s) => s.to_string(),
+            Err(_) => input.parse::<syn::LitStr>()?.value(),
+        };
+        let mut args = Vec::new();
+        while input.parse::<Token![,]>().is_ok() {
+            let name = input.parse::<syn::Ident>()?;
+            input.parse::<Token![=]>()?;
+            let expr = input.parse::<syn::Expr>()?;
+            args.push((name, expr));
+        }
+        Ok(Invoc { instr, args })
+    }
 }
 
 struct Append<T>(T);