aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-03-31 18:45:00 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-03-31 18:45:00 -0700
commit827a7c960cdfc6285afa5d780a6c0e273019ea09 (patch)
treed538ae7dd77afd8d5ba7b62c1838c6a7c0630f76
parent290973410b8519f1850a0faf98e9028e25d50510 (diff)
downloadmilf-rs-827a7c960cdfc6285afa5d780a6c0e273019ea09.tar.gz
milf-rs-827a7c960cdfc6285afa5d780a6c0e273019ea09.zip
Fix backcompat with array definitions
-rw-r--r--src/de.rs7
-rw-r--r--tests/backcompat.rs9
2 files changed, 13 insertions, 3 deletions
diff --git a/src/de.rs b/src/de.rs
index 1406f35..1fb2eb5 100644
--- a/src/de.rs
+++ b/src/de.rs
@@ -634,7 +634,12 @@ impl<'a> Deserializer<'a> {
} else {
loop {
match self.next()? {
- Some(Token::RightBracket) |
+ Some(Token::RightBracket) => {
+ if array {
+ self.eat(Token::RightBracket)?;
+ }
+ break
+ }
Some(Token::Newline) |
None => break,
_ => {}
diff --git a/tests/backcompat.rs b/tests/backcompat.rs
index 33dbfa5..1b3f599 100644
--- a/tests/backcompat.rs
+++ b/tests/backcompat.rs
@@ -5,10 +5,15 @@ use serde::de::Deserialize;
#[test]
fn main() {
- assert!("[a] foo = 1".parse::<toml::Value>().is_err());
+ let s = "
+ [a] foo = 1
+ [[b]] foo = 1
+ ";
+ assert!(s.parse::<toml::Value>().is_err());
- let mut d = toml::de::Deserializer::new("[a] foo = 1");
+ let mut d = toml::de::Deserializer::new(s);
d.set_require_newline_after_table(false);
let value = toml::Value::deserialize(&mut d).unwrap();
assert_eq!(value["a"]["foo"].as_integer(), Some(1));
+ assert_eq!(value["b"][0]["foo"].as_integer(), Some(1));
}