mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-27 19:17:57 +00:00
missing field errors displayed original field name instead of renamed
closes #63
This commit is contained in:
@@ -639,9 +639,11 @@ fn deserialize_map(
|
||||
let extract_values: Vec<P<ast::Stmt>> = field_names.iter()
|
||||
.zip(struct_def.fields.iter())
|
||||
.map(|(field_name, field)| {
|
||||
let name_str = match field.node.kind {
|
||||
ast::NamedField(name, _) => builder.expr().str(name),
|
||||
ast::UnnamedField(_) => panic!("struct contains unnamed fields"),
|
||||
let rename = field::field_rename(field, &field::Direction::Deserialize);
|
||||
let name_str = match (rename, field.node.kind) {
|
||||
(Some(rename), _) => builder.expr().build_lit(P(rename.clone())),
|
||||
(None, ast::NamedField(name, _)) => builder.expr().str(name),
|
||||
(None, ast::UnnamedField(_)) => panic!("struct contains unnamed fields"),
|
||||
};
|
||||
|
||||
let missing_expr = if field::default_value(field) {
|
||||
|
||||
@@ -10,7 +10,7 @@ pub enum Direction {
|
||||
Deserialize,
|
||||
}
|
||||
|
||||
fn field_rename<'a>(
|
||||
pub fn field_rename<'a>(
|
||||
field: &'a ast::StructField,
|
||||
direction: &Direction,
|
||||
) -> Option<&'a ast::Lit> {
|
||||
|
||||
Reference in New Issue
Block a user