diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2018-09-06 16:54:14 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-06 16:54:14 -0700 |
| commit | 469af4ef9b2b2a1c41072574e5a797e31583b896 (patch) | |
| tree | 23f2a7c7b8866d05a7bc413e10f18d1cfe976911 /library/stdarch/crates/assert-instr-macro/src | |
| parent | 274b91093d0f4a8a08050a9b54a7bbf547549447 (diff) | |
| download | rust-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.rs | 37 |
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); |
