1
- use proc_macro2:: { Ident , TokenStream } ;
2
- use proc_macro_error:: { abort , abort_call_site, proc_macro_error, ResultExt } ;
1
+ use proc_macro2:: TokenStream ;
2
+ use proc_macro_error:: { abort_call_site, proc_macro_error, ResultExt } ;
3
3
use quote:: quote;
4
4
use syn:: {
5
5
parse_macro_input, parse_quote, punctuated:: Punctuated , DataStruct , DeriveInput , Field , Fields ,
6
- FieldsNamed , Lit , Meta , MetaList , MetaNameValue , NestedMeta , Path , Token ,
6
+ FieldsNamed , Lit , Meta , MetaNameValue , NestedMeta , Path , Token ,
7
7
} ;
8
8
9
9
// TODO generally should use fully qualified names for trait function calls
@@ -88,16 +88,11 @@ pub fn attribute_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStre
88
88
{
89
89
const VALID_FORMAT : & str = r#"Expected `#[attribute(default, missing="error message", expected="error message"])`"# ;
90
90
let meta: Meta = attribute. parse_meta ( ) . unwrap_or_abort ( ) ;
91
- match meta {
92
- Meta :: List ( meta) => {
93
- for meta in meta. nested {
94
- if let NestedMeta :: Meta ( Meta :: NameValue ( MetaNameValue {
95
- path,
96
- lit,
97
- ..
98
- } ) ) = meta
99
- {
100
- match (
91
+ if let Meta :: List ( meta) = meta {
92
+ for meta in meta. nested {
93
+ if let NestedMeta :: Meta ( meta) = meta {
94
+ match meta {
95
+ Meta :: NameValue ( MetaNameValue { path, lit, .. } ) => match (
101
96
path. get_ident ( )
102
97
. unwrap_or_else ( || abort_call_site ! ( VALID_FORMAT ) )
103
98
. to_string ( )
@@ -107,20 +102,21 @@ pub fn attribute_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStre
107
102
( "missing" , Lit :: Str ( lit) ) => missing = Some ( lit. value ( ) ) ,
108
103
( "expected" , Lit :: Str ( lit) ) => expected = Some ( lit. value ( ) ) ,
109
104
_ => abort_call_site ! ( VALID_FORMAT ) ,
105
+ } ,
106
+
107
+ Meta :: Path ( path) => {
108
+ if path. is_ident ( "default" ) {
109
+ default = true ;
110
+ } else {
111
+ abort_call_site ! ( VALID_FORMAT ) ;
112
+ }
110
113
}
111
- } else {
112
- abort_call_site ! ( VALID_FORMAT ) ;
114
+ _ => abort_call_site ! ( VALID_FORMAT ) ,
113
115
}
114
- }
115
- }
116
- Meta :: Path ( path) => {
117
- if path. is_ident ( "default" ) {
118
- default = true ;
119
116
} else {
120
117
abort_call_site ! ( VALID_FORMAT ) ;
121
118
}
122
119
}
123
- _ => ( ) ,
124
120
}
125
121
}
126
122
0 commit comments