Skip to content

Commit

Permalink
Fix errors caused by relative imports
Browse files Browse the repository at this point in the history
  • Loading branch information
harrisonturton committed Jun 15, 2023
1 parent 2fe69d9 commit 7ba2005
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
17 changes: 11 additions & 6 deletions serde_derive/src/de.rs
Expand Up @@ -1344,13 +1344,18 @@ fn deserialize_internally_tagged_enum(
) -> Fragment {
let (variants_stmt, variant_visitor) = prepare_enum_variant_enum(variants, cattrs);

let mut default_variant = quote! { None };
for (i, variant) in variants.iter().enumerate() {
if variant.attrs.default() {
let variant_name = field_i(i);
default_variant = quote!{ Some(__Field::#variant_name) };
let default_variant = {
for (i, variant) in variants.iter().enumerate() {
if variant.attrs.default() {
return quote_block! {
std::option::Option::Some(__Field::#{field_i(i)})
};
}
}
}
quote_block! {
std::option::Option::None
}
};

// Match arms to extract a variant from a string
let variant_arms = variants
Expand Down
6 changes: 4 additions & 2 deletions serde_derive/src/internals/ast.rs
Expand Up @@ -156,10 +156,12 @@ fn enum_from_ast<'a>(
})
.collect();

// Check only one enum arm is marked #[serde(default)]
let mut has_default = false;
for variant in &variants {
if variant.attrs.default() && has_default {
if !variant.attrs.default() {
continue;
}
if has_default {
cx.error_spanned_by(&variant.ident, "only one variant can be marked as default");
break;
}
Expand Down

0 comments on commit 7ba2005

Please sign in to comment.