diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2016-05-22 23:30:43 -0700 | 
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2016-05-22 23:30:43 -0700 | 
| commit | 44fc9d9f37cd1b2e3d9170d04fd0a8a04d7884ff (patch) | |
| tree | dca1a42b18e8236a3ce23f55747544b444866f0f /src | |
| parent | 97592e120f24938c06d036271aa658f9dfb6dd5e (diff) | |
| download | milf-rs-44fc9d9f37cd1b2e3d9170d04fd0a8a04d7884ff.tar.gz milf-rs-44fc9d9f37cd1b2e3d9170d04fd0a8a04d7884ff.zip | |
Require newlines to be present after keys
Closes #100
Diffstat (limited to 'src')
| -rw-r--r-- | src/parser.rs | 37 | 
1 files changed, 35 insertions, 2 deletions
| diff --git a/src/parser.rs b/src/parser.rs index 08f032d..40d12a6 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -398,10 +398,20 @@ impl<'a> Parser<'a> {                  Some(value) => value,                  None => return false,              }; +            let end = self.next_pos();              self.insert(into, key, value, key_lo);              self.ws(); -            self.comment(); -            self.newline(); +            if !self.comment() && !self.newline() { +                if self.peek(0).is_none() { +                    return true +                } +                self.errors.push(ParserError { +                    lo: key_lo, +                    hi: end, +                    desc: format!("expected a newline after a key"), +                }); +                return false +            }          }          true      } @@ -1591,4 +1601,27 @@ trimmed in raw strings.          bad!("foo = 2016-09-09T09:09:09-2:00", "malformed date literal");          bad!("foo = 2016-09-09T09:09:09Z-2:00", "expected");      } + +    #[test] +    fn require_newline_after_value() { +        bad!("0=0r=false", "expected a newline"); +        bad!(r#" +0=""o=""m=""r=""00="0"q="""0"""e="""0""" +"#, "expected a newline"); +        bad!(r#" +[[0000l0]] +0="0"[[0000l0]] +0="0"[[0000l0]] +0="0"l="0" +"#, "expected a newline"); +        bad!(r#" +0=[0]00=[0,0,0]t=["0","0","0"]s=[1000-00-00T00:00:00Z,2000-00-00T00:00:00Z] +"#, "expected a newline"); +        bad!(r#" +0=0r0=0r=false +"#, "expected a newline"); +        bad!(r#" +0=0r0=0r=falsefal=false +"#, "expected a newline"); +    }  } |