diff --git a/src/ser.rs b/src/ser.rs index 8f6b366..9fa0678 100644 --- a/src/ser.rs +++ b/src/ser.rs @@ -107,9 +107,6 @@ pub enum Error { /// attempted where the key of a map was not a string. KeyNotString, - /// Keys in maps are not allowed to have newlines. - KeyNewline, - /// Arrays in TOML must have a homogenous type, but a heterogeneous array /// was emitted. ArrayMixedType, @@ -624,9 +621,6 @@ impl<'a, 'b> ser::SerializeMap for SerializeTable<'a, 'b> { SerializeTable::Table { ref mut key, .. } => { key.truncate(0); *key = input.serialize(StringExtractor)?; - if key.contains('\n') { - return Err(Error::KeyNewline) - } } } Ok(()) @@ -1047,7 +1041,6 @@ impl fmt::Display for Error { match *self { Error::UnsupportedType => "unsupported Rust type".fmt(f), Error::KeyNotString => "map key was not a string".fmt(f), - Error::KeyNewline => "map keys cannot contain newlines".fmt(f), Error::ArrayMixedType => "arrays cannot have mixed types".fmt(f), Error::ValueAfterTable => "values must be emitted before tables".fmt(f), Error::DateInvalid => "a serialized date was invalid".fmt(f), @@ -1064,7 +1057,6 @@ impl error::Error for Error { match *self { Error::UnsupportedType => "unsupported Rust type", Error::KeyNotString => "map key was not a string", - Error::KeyNewline => "map keys cannot contain newlines", Error::ArrayMixedType => "arrays cannot have mixed types", Error::ValueAfterTable => "values must be emitted before tables", Error::DateInvalid => "a serialized date was invalid", diff --git a/tests/valid.rs b/tests/valid.rs index b3cc096..e7577ad 100644 --- a/tests/valid.rs +++ b/tests/valid.rs @@ -193,6 +193,9 @@ test!(example_bom, test!(datetime_truncate, include_str!("valid/datetime-truncate.toml"), include_str!("valid/datetime-truncate.json")); +test!(key_quote_newline, + include_str!("valid/key-quote-newline.toml"), + include_str!("valid/key-quote-newline.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/key-quote-newline.json b/tests/valid/key-quote-newline.json new file mode 100644 index 0000000..12473e4 --- /dev/null +++ b/tests/valid/key-quote-newline.json @@ -0,0 +1,3 @@ +{ + "\n": {"type": "integer", "value": "1"} +} diff --git a/tests/valid/key-quote-newline.toml b/tests/valid/key-quote-newline.toml new file mode 100644 index 0000000..a2639bf --- /dev/null +++ b/tests/valid/key-quote-newline.toml @@ -0,0 +1 @@ +"\n" = 1