diff options
author | David Tolnay <dtolnay@gmail.com> | 2019-05-11 12:15:31 -0700 |
---|---|---|
committer | David Tolnay <dtolnay@gmail.com> | 2019-05-11 12:20:18 -0700 |
commit | c621f4476dd0b1a03ee7c25b14043ee983779f37 (patch) | |
tree | 7a97bb4f88af71e4f1365983c3f153c9c8b3c107 | |
parent | add8ec6a7d94f815491e27e95c452dd005c361f3 (diff) | |
download | remain-c621f4476dd0b1a03ee7c25b14043ee983779f37.tar.gz |
Store FieldsNamed from struct parse
-rw-r--r-- | src/check.rs | 10 | ||||
-rw-r--r-- | src/parse.rs | 6 |
2 files changed, 5 insertions, 11 deletions
diff --git a/src/check.rs b/src/check.rs index 1b50442..0995078 100644 --- a/src/check.rs +++ b/src/check.rs @@ -1,5 +1,5 @@ use syn::{Arm, Ident, Result, Variant}; -use syn::{Error, Field, Fields, Pat, PatIdent}; +use syn::{Error, Field, Pat, PatIdent}; use crate::compare::Path; use crate::format; @@ -8,13 +8,7 @@ use crate::parse::Input::{self, *}; pub fn sorted(input: Input) -> Result<()> { let paths = match input { Enum(item) => collect_paths(item.variants)?, - Struct(item) => { - if let Fields::Named(fields) = item.fields { - collect_paths(fields.named)? - } else { - unreachable!("must be named field") - } - } + Struct(fields) => collect_paths(fields.named)?, Match(expr) | Let(expr) => collect_paths(expr.arms)?, }; diff --git a/src/parse.rs b/src/parse.rs index cd108ef..97bd9f8 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -15,7 +15,7 @@ impl Parse for Nothing { pub enum Input { Enum(syn::ItemEnum), Match(syn::ExprMatch), - Struct(syn::ItemStruct), + Struct(syn::FieldsNamed), Let(syn::ExprMatch), } @@ -64,8 +64,8 @@ impl Parse for Input { return input.parse().map(Input::Enum); } else if ahead.peek(Token![struct]) { let input: syn::ItemStruct = input.parse()?; - if let Fields::Named(_) = input.fields { - return Ok(Input::Struct(input)); + if let Fields::Named(fields) = input.fields { + return Ok(Input::Struct(fields)); } } |