From 71b5310234964d22331c9ce59972f8a3026da61a Mon Sep 17 00:00:00 2001 From: Alan Du Date: Wed, 31 May 2017 17:36:20 +0100 Subject: Remove unused test macro --- tests/serde.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/serde.rs b/tests/serde.rs index 0f4c37a..2f8d871 100644 --- a/tests/serde.rs +++ b/tests/serde.rs @@ -61,10 +61,6 @@ macro_rules! error { }) } -macro_rules! decode( ($t:expr) => ({ - t!($t.try_into()) -}) ); - macro_rules! map( ($($k:ident: $v:expr),*) => ({ let mut _m = BTreeMap::new(); $(_m.insert(stringify!($k).to_string(), $v);)* -- cgit v1.2.3 From ba505647f21a1355e1f36e2263fe6fd639adc38a Mon Sep 17 00:00:00 2001 From: Alan Du Date: Thu, 1 Jun 2017 11:38:56 +0100 Subject: Close #180 --- src/ser.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/ser.rs b/src/ser.rs index 22eda81..8f6b366 100644 --- a/src/ser.rs +++ b/src/ser.rs @@ -308,8 +308,28 @@ impl<'a> Serializer<'a> { State::Array { .. } => true, _ => false, }; + + // Unlike [..]s, we can't omit [[..]] ancestors, so be sure to emit table + // headers for them. + let mut p = state; + if let State::Array { first, parent, .. } = *state { + if first.get() { + p = parent; + } + } + while let State::Table { first, parent, .. } = *p { + p = parent; + if !first.get() { + break; + } + if let State::Array { parent: &State::Table {..}, ..} = *parent { + self.emit_table_header(parent)?; + break; + } + } + match *state { - State::Table { first , .. } | + State::Table { first, .. } | State::Array { parent: &State::Table { first, .. }, .. } => { if !first.get() { self.dst.push_str("\n"); -- cgit v1.2.3 From 20dced6967398c19ae8d502bd916cc294df6a3d4 Mon Sep 17 00:00:00 2001 From: Alan Du Date: Thu, 1 Jun 2017 10:29:11 +0100 Subject: Add test case --- tests/valid.rs | 4 ++++ tests/valid/table-array-nest-no-keys.json | 14 ++++++++++++++ tests/valid/table-array-nest-no-keys.toml | 6 ++++++ 3 files changed, 24 insertions(+) create mode 100644 tests/valid/table-array-nest-no-keys.json create mode 100644 tests/valid/table-array-nest-no-keys.toml diff --git a/tests/valid.rs b/tests/valid.rs index e8ea6af..676fc67 100644 --- a/tests/valid.rs +++ b/tests/valid.rs @@ -189,3 +189,7 @@ test!(example4, test!(example_bom, include_str!("valid/example-bom.toml"), include_str!("valid/example.json")); + +test!(table_array_nest_no_keys, + include_str!("valid/table-array-nest-no-keys.toml"), + include_str!("valid/table-array-nest-no-keys.json")); diff --git a/tests/valid/table-array-nest-no-keys.json b/tests/valid/table-array-nest-no-keys.json new file mode 100644 index 0000000..7537b1a --- /dev/null +++ b/tests/valid/table-array-nest-no-keys.json @@ -0,0 +1,14 @@ +{ + "albums": [ + { + "songs": [{}, {}] + } + ], + "artists": [ + { + "home": { + "address": {} + } + } + ] +} diff --git a/tests/valid/table-array-nest-no-keys.toml b/tests/valid/table-array-nest-no-keys.toml new file mode 100644 index 0000000..ad6eb10 --- /dev/null +++ b/tests/valid/table-array-nest-no-keys.toml @@ -0,0 +1,6 @@ +[[ albums ]] + [[ albums.songs ]] + [[ albums.songs ]] + +[[ artists ]] + [ artists.home.address ] -- cgit v1.2.3