aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2019-05-11 12:15:31 -0700
committerDavid Tolnay <dtolnay@gmail.com>2019-05-11 12:20:18 -0700
commitc621f4476dd0b1a03ee7c25b14043ee983779f37 (patch)
tree7a97bb4f88af71e4f1365983c3f153c9c8b3c107
parentadd8ec6a7d94f815491e27e95c452dd005c361f3 (diff)
downloadremain-c621f4476dd0b1a03ee7c25b14043ee983779f37.tar.gz
Store FieldsNamed from struct parse
-rw-r--r--src/check.rs10
-rw-r--r--src/parse.rs6
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));
}
}