1
- use crate :: internals:: name:: MultiName ;
1
+ use crate :: internals:: name:: { MultiName , Name } ;
2
2
use crate :: internals:: symbol:: * ;
3
3
use crate :: internals:: { ungroup, Ctxt } ;
4
4
use proc_macro2:: { Spacing , Span , TokenStream , TokenTree } ;
@@ -131,8 +131,8 @@ impl<'c, T> VecAttr<'c, T> {
131
131
}
132
132
}
133
133
134
- fn unraw ( ident : & Ident ) -> String {
135
- ident. to_string ( ) . trim_start_matches ( "r#" ) . to_owned ( )
134
+ fn unraw ( ident : & Ident ) -> Ident {
135
+ Ident :: new ( ident. to_string ( ) . trim_start_matches ( "r#" ) , ident . span ( ) )
136
136
}
137
137
138
138
#[ derive( Copy , Clone ) ]
@@ -278,8 +278,8 @@ impl Container {
278
278
// #[serde(rename = "foo")]
279
279
// #[serde(rename(serialize = "foo", deserialize = "bar"))]
280
280
let ( ser, de) = get_renames ( cx, RENAME , & meta) ?;
281
- ser_name. set_opt ( & meta. path , ser. as_ref ( ) . map ( syn :: LitStr :: value ) ) ;
282
- de_name. set_opt ( & meta. path , de. as_ref ( ) . map ( syn :: LitStr :: value ) ) ;
281
+ ser_name. set_opt ( & meta. path , ser. as_ref ( ) . map ( Name :: from ) ) ;
282
+ de_name. set_opt ( & meta. path , de. as_ref ( ) . map ( Name :: from ) ) ;
283
283
} else if meta. path == RENAME_ALL {
284
284
// #[serde(rename_all = "foo")]
285
285
// #[serde(rename_all(serialize = "foo", deserialize = "bar"))]
@@ -518,7 +518,7 @@ impl Container {
518
518
}
519
519
520
520
Container {
521
- name : MultiName :: from_attrs ( unraw ( & item. ident ) , ser_name, de_name, None ) ,
521
+ name : MultiName :: from_attrs ( Name :: from ( & unraw ( & item. ident ) ) , ser_name, de_name, None ) ,
522
522
transparent : transparent. get ( ) ,
523
523
deny_unknown_fields : deny_unknown_fields. get ( ) ,
524
524
default : default. get ( ) . unwrap_or ( Default :: None ) ,
@@ -783,15 +783,15 @@ impl Variant {
783
783
// #[serde(rename = "foo")]
784
784
// #[serde(rename(serialize = "foo", deserialize = "bar"))]
785
785
let ( ser, de) = get_multiple_renames ( cx, & meta) ?;
786
- ser_name. set_opt ( & meta. path , ser. as_ref ( ) . map ( syn :: LitStr :: value ) ) ;
786
+ ser_name. set_opt ( & meta. path , ser. as_ref ( ) . map ( Name :: from ) ) ;
787
787
for de_value in de {
788
- de_name. set_if_none ( de_value . value ( ) ) ;
789
- de_aliases. insert ( & meta. path , de_value . value ( ) ) ;
788
+ de_name. set_if_none ( Name :: from ( & de_value ) ) ;
789
+ de_aliases. insert ( & meta. path , Name :: from ( & de_value ) ) ;
790
790
}
791
791
} else if meta. path == ALIAS {
792
792
// #[serde(alias = "foo")]
793
793
if let Some ( s) = get_lit_str ( cx, ALIAS , & meta) ? {
794
- de_aliases. insert ( & meta. path , s . value ( ) ) ;
794
+ de_aliases. insert ( & meta. path , Name :: from ( & s ) ) ;
795
795
}
796
796
} else if meta. path == RENAME_ALL {
797
797
// #[serde(rename_all = "foo")]
@@ -898,7 +898,12 @@ impl Variant {
898
898
}
899
899
900
900
Variant {
901
- name : MultiName :: from_attrs ( unraw ( & variant. ident ) , ser_name, de_name, Some ( de_aliases) ) ,
901
+ name : MultiName :: from_attrs (
902
+ Name :: from ( & unraw ( & variant. ident ) ) ,
903
+ ser_name,
904
+ de_name,
905
+ Some ( de_aliases) ,
906
+ ) ,
902
907
rename_all_rules : RenameAllRules {
903
908
serialize : rename_all_ser_rule. get ( ) . unwrap_or ( RenameRule :: None ) ,
904
909
deserialize : rename_all_de_rule. get ( ) . unwrap_or ( RenameRule :: None ) ,
@@ -919,16 +924,19 @@ impl Variant {
919
924
& self . name
920
925
}
921
926
922
- pub fn aliases ( & self ) -> & BTreeSet < String > {
927
+ pub fn aliases ( & self ) -> & BTreeSet < Name > {
923
928
self . name . deserialize_aliases ( )
924
929
}
925
930
926
931
pub fn rename_by_rules ( & mut self , rules : RenameAllRules ) {
927
932
if !self . name . serialize_renamed {
928
- self . name . serialize = rules. serialize . apply_to_variant ( & self . name . serialize ) ;
933
+ self . name . serialize . value =
934
+ rules. serialize . apply_to_variant ( & self . name . serialize . value ) ;
929
935
}
930
936
if !self . name . deserialize_renamed {
931
- self . name . deserialize = rules. deserialize . apply_to_variant ( & self . name . deserialize ) ;
937
+ self . name . deserialize . value = rules
938
+ . deserialize
939
+ . apply_to_variant ( & self . name . deserialize . value ) ;
932
940
}
933
941
self . name
934
942
. deserialize_aliases
@@ -1033,8 +1041,11 @@ impl Field {
1033
1041
let mut flatten = BoolAttr :: none ( cx, FLATTEN ) ;
1034
1042
1035
1043
let ident = match & field. ident {
1036
- Some ( ident) => unraw ( ident) ,
1037
- None => index. to_string ( ) ,
1044
+ Some ( ident) => Name :: from ( & unraw ( ident) ) ,
1045
+ None => Name {
1046
+ value : index. to_string ( ) ,
1047
+ span : Span :: call_site ( ) ,
1048
+ } ,
1038
1049
} ;
1039
1050
1040
1051
if let Some ( borrow_attribute) = attrs. and_then ( |variant| variant. borrow . as_ref ( ) ) {
@@ -1070,15 +1081,15 @@ impl Field {
1070
1081
// #[serde(rename = "foo")]
1071
1082
// #[serde(rename(serialize = "foo", deserialize = "bar"))]
1072
1083
let ( ser, de) = get_multiple_renames ( cx, & meta) ?;
1073
- ser_name. set_opt ( & meta. path , ser. as_ref ( ) . map ( syn :: LitStr :: value ) ) ;
1084
+ ser_name. set_opt ( & meta. path , ser. as_ref ( ) . map ( Name :: from ) ) ;
1074
1085
for de_value in de {
1075
- de_name. set_if_none ( de_value . value ( ) ) ;
1076
- de_aliases. insert ( & meta. path , de_value . value ( ) ) ;
1086
+ de_name. set_if_none ( Name :: from ( & de_value ) ) ;
1087
+ de_aliases. insert ( & meta. path , Name :: from ( & de_value ) ) ;
1077
1088
}
1078
1089
} else if meta. path == ALIAS {
1079
1090
// #[serde(alias = "foo")]
1080
1091
if let Some ( s) = get_lit_str ( cx, ALIAS , & meta) ? {
1081
- de_aliases. insert ( & meta. path , s . value ( ) ) ;
1092
+ de_aliases. insert ( & meta. path , Name :: from ( & s ) ) ;
1082
1093
}
1083
1094
} else if meta. path == DEFAULT {
1084
1095
if meta. input . peek ( Token ! [ =] ) {
@@ -1261,16 +1272,18 @@ impl Field {
1261
1272
& self . name
1262
1273
}
1263
1274
1264
- pub fn aliases ( & self ) -> & BTreeSet < String > {
1275
+ pub fn aliases ( & self ) -> & BTreeSet < Name > {
1265
1276
self . name . deserialize_aliases ( )
1266
1277
}
1267
1278
1268
1279
pub fn rename_by_rules ( & mut self , rules : RenameAllRules ) {
1269
1280
if !self . name . serialize_renamed {
1270
- self . name . serialize = rules. serialize . apply_to_field ( & self . name . serialize ) ;
1281
+ self . name . serialize . value = rules. serialize . apply_to_field ( & self . name . serialize . value ) ;
1271
1282
}
1272
1283
if !self . name . deserialize_renamed {
1273
- self . name . deserialize = rules. deserialize . apply_to_field ( & self . name . deserialize ) ;
1284
+ self . name . deserialize . value = rules
1285
+ . deserialize
1286
+ . apply_to_field ( & self . name . deserialize . value ) ;
1274
1287
}
1275
1288
self . name
1276
1289
. deserialize_aliases
@@ -1720,7 +1733,7 @@ fn is_primitive_path(path: &syn::Path, primitive: &str) -> bool {
1720
1733
// attribute on the field so there must be at least one borrowable lifetime.
1721
1734
fn borrowable_lifetimes (
1722
1735
cx : & Ctxt ,
1723
- name : & str ,
1736
+ name : & Name ,
1724
1737
field : & syn:: Field ,
1725
1738
) -> Result < BTreeSet < syn:: Lifetime > , ( ) > {
1726
1739
let mut lifetimes = BTreeSet :: new ( ) ;
0 commit comments