mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-13 17:11:02 +00:00
Store flatten flag in container attributes
This commit is contained in:
committed by
Armin Ronacher
parent
571bb8caed
commit
5ae06bba49
@@ -48,7 +48,7 @@ pub enum Style {
|
||||
|
||||
impl<'a> Container<'a> {
|
||||
pub fn from_ast(cx: &Ctxt, item: &'a syn::DeriveInput) -> Container<'a> {
|
||||
let attrs = attr::Container::from_ast(cx, item);
|
||||
let mut attrs = attr::Container::from_ast(cx, item);
|
||||
|
||||
let mut data = match item.data {
|
||||
syn::Data::Enum(ref data) => {
|
||||
@@ -85,6 +85,10 @@ impl<'a> Container<'a> {
|
||||
found #[serde(repr = \"{}\")]", attrs.repr()));
|
||||
}
|
||||
|
||||
if has_flatten {
|
||||
attrs.mark_has_flatten();
|
||||
}
|
||||
|
||||
let item = Container {
|
||||
ident: item.ident,
|
||||
attrs: attrs,
|
||||
|
||||
@@ -146,6 +146,7 @@ pub struct Container {
|
||||
remote: Option<syn::Path>,
|
||||
identifier: Identifier,
|
||||
repr: ContainerRepr,
|
||||
has_flatten: bool,
|
||||
}
|
||||
|
||||
/// Styles of representing an enum.
|
||||
@@ -417,6 +418,7 @@ impl Container {
|
||||
remote: remote.get(),
|
||||
identifier: decide_identifier(cx, item, &field_identifier, &variant_identifier),
|
||||
repr: repr.get().unwrap_or(ContainerRepr::Auto),
|
||||
has_flatten: false,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -467,6 +469,14 @@ impl Container {
|
||||
pub fn repr(&self) -> ContainerRepr {
|
||||
self.repr
|
||||
}
|
||||
|
||||
pub fn has_flatten(&self) -> bool {
|
||||
self.has_flatten
|
||||
}
|
||||
|
||||
pub fn mark_has_flatten(&mut self) {
|
||||
self.has_flatten = true;
|
||||
}
|
||||
}
|
||||
|
||||
fn decide_tag(
|
||||
|
||||
Reference in New Issue
Block a user