@@ -2,9 +2,9 @@ use proc_macro2::{Span, TokenStream};
22use quote:: { format_ident, quote} ;
33use std:: iter;
44use syn:: {
5- punctuated :: Punctuated , token , AngleBracketedGenericArguments , Data , DataStruct , DeriveInput ,
6- Error , Fields , GenericArgument , GenericParam , Generics , Ident , Lifetime , PathArguments ,
7- PathSegment ,
5+ AngleBracketedGenericArguments , Data , DataStruct , DeriveInput , Error , Fields , GenericArgument ,
6+ GenericParam , Generics , Ident , Lifetime , PathArguments , PathSegment , punctuated :: Punctuated ,
7+ token ,
88} ;
99use syn:: { LifetimeParam , TraitBound , TraitBoundModifier , TypeParamBound } ;
1010
@@ -45,7 +45,7 @@ pub fn expand_derive_fromsql(input: DeriveInput) -> Result<TokenStream, Error> {
4545 return Err ( Error :: new_spanned (
4646 input,
4747 "#[postgres(transparent)] may only be applied to single field tuple structs" ,
48- ) )
48+ ) ) ;
4949 }
5050 }
5151 } else if overrides. allow_mismatch {
@@ -70,48 +70,48 @@ pub fn expand_derive_fromsql(input: DeriveInput) -> Result<TokenStream, Error> {
7070 }
7171 } else {
7272 match input. data {
73- Data :: Enum ( ref data) => {
74- let variants = data
75- . variants
76- . iter ( )
77- . map ( |variant| Variant :: parse ( variant, overrides. rename_all ) )
78- . collect :: < Result < Vec < _ > , _ > > ( ) ?;
79- (
80- accepts:: enum_body ( & name, & variants, overrides. allow_mismatch ) ,
81- enum_body ( & input. ident , & variants) ,
82- )
83- }
84- Data :: Struct ( DataStruct {
85- fields : Fields :: Unnamed ( ref fields) ,
86- ..
87- } ) if fields. unnamed . len ( ) == 1 => {
88- let field = fields. unnamed . first ( ) . unwrap ( ) ;
89- (
90- domain_accepts_body ( & name, field) ,
91- domain_body ( & input. ident , field) ,
92- )
93- }
94- Data :: Struct ( DataStruct {
95- fields : Fields :: Named ( ref fields) ,
96- ..
97- } ) => {
98- let fields = fields
99- . named
100- . iter ( )
101- . map ( |field| Field :: parse ( field, overrides. rename_all ) )
102- . collect :: < Result < Vec < _ > , _ > > ( ) ?;
103- (
104- accepts:: composite_body ( & name, "FromSql" , & fields) ,
105- composite_body ( & input. ident , & fields) ,
106- )
107- }
108- _ => {
109- return Err ( Error :: new_spanned (
110- input,
111- "#[derive(FromSql)] may only be applied to structs, single field tuple structs, and enums" ,
112- ) )
73+ Data :: Enum ( ref data) => {
74+ let variants = data
75+ . variants
76+ . iter ( )
77+ . map ( |variant| Variant :: parse ( variant, overrides. rename_all ) )
78+ . collect :: < Result < Vec < _ > , _ > > ( ) ?;
79+ (
80+ accepts:: enum_body ( & name, & variants, overrides. allow_mismatch ) ,
81+ enum_body ( & input. ident , & variants) ,
82+ )
83+ }
84+ Data :: Struct ( DataStruct {
85+ fields : Fields :: Unnamed ( ref fields) ,
86+ ..
87+ } ) if fields. unnamed . len ( ) == 1 => {
88+ let field = fields. unnamed . first ( ) . unwrap ( ) ;
89+ (
90+ domain_accepts_body ( & name, field) ,
91+ domain_body ( & input. ident , field) ,
92+ )
93+ }
94+ Data :: Struct ( DataStruct {
95+ fields : Fields :: Named ( ref fields) ,
96+ ..
97+ } ) => {
98+ let fields = fields
99+ . named
100+ . iter ( )
101+ . map ( |field| Field :: parse ( field, overrides. rename_all ) )
102+ . collect :: < Result < Vec < _ > , _ > > ( ) ?;
103+ (
104+ accepts:: composite_body ( & name, "FromSql" , & fields) ,
105+ composite_body ( & input. ident , & fields) ,
106+ )
107+ }
108+ _ => {
109+ return Err ( Error :: new_spanned (
110+ input,
111+ "#[derive(FromSql)] may only be applied to structs, single field tuple structs, and enums" ,
112+ ) ) ;
113+ }
113114 }
114- }
115115 } ;
116116
117117 let ident = & input. ident ;
0 commit comments