aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/parser.rs13
-rw-r--r--src/test/valid.rs3
-rw-r--r--src/test/valid/string-empty.json6
-rw-r--r--src/test/valid/string-empty.toml1
4 files changed, 19 insertions, 4 deletions
diff --git a/src/parser.rs b/src/parser.rs
index ec9adf9..27edd2f 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -265,11 +265,16 @@ impl<'a> Parser<'a> {
let mut multiline = false;
let mut ret = String::new();
- // detect multiline literals
+ // detect multiline literals, but be careful about empty ""
+ // strings
if self.eat('"') {
- multiline = true;
- if !self.expect('"') { return None }
- self.eat('\n');
+ if self.eat('"') {
+ multiline = true;
+ self.eat('\n');
+ } else {
+ // empty
+ return Some(String(ret))
+ }
}
loop {
diff --git a/src/test/valid.rs b/src/test/valid.rs
index 9a812d5..1bcfeb2 100644
--- a/src/test/valid.rs
+++ b/src/test/valid.rs
@@ -122,6 +122,9 @@ test!(long_float,
test!(long_integer,
include_str!("valid/long-integer.toml"),
include_str!("valid/long-integer.json"))
+test!(string_empty,
+ include_str!("valid/string-empty.toml"),
+ include_str!("valid/string-empty.json"))
test!(string_escapes,
include_str!("valid/string-escapes.toml"),
include_str!("valid/string-escapes.json"))
diff --git a/src/test/valid/string-empty.json b/src/test/valid/string-empty.json
new file mode 100644
index 0000000..6c26d69
--- /dev/null
+++ b/src/test/valid/string-empty.json
@@ -0,0 +1,6 @@
+{
+ "answer": {
+ "type": "string",
+ "value": ""
+ }
+}
diff --git a/src/test/valid/string-empty.toml b/src/test/valid/string-empty.toml
new file mode 100644
index 0000000..e37e681
--- /dev/null
+++ b/src/test/valid/string-empty.toml
@@ -0,0 +1 @@
+answer = ""