Implements alias annotation and allow multiple deserialization renames.

This commit is contained in:
Lymia Aluysia
2019-01-15 10:35:09 -06:00
parent b605cd1bb9
commit 1ed228b92b
8 changed files with 389 additions and 145 deletions
+8 -2
View File
@@ -295,12 +295,18 @@ fn check_internal_tag_field_name_conflict(cx: &Ctxt, cont: &Container) {
let check_de = !field.attrs.skip_deserializing();
let name = field.attrs.name();
let ser_name = name.serialize_name();
let de_name = name.deserialize_name();
if check_ser && ser_name == tag || check_de && de_name == tag {
if check_ser && ser_name == tag {
diagnose_conflict();
return;
}
for de_name in field.attrs.aliases() {
if check_de && de_name == tag {
diagnose_conflict();
return;
}
}
}
}
Style::Unit | Style::Newtype | Style::Tuple => {}