parser: require \n after parsing integer in kv (#527)

Fixes #526
This commit is contained in:
Thomas Pelletier
2021-04-24 09:57:21 -04:00
committed by GitHub
parent 931f02a519
commit 1e80267558
2 changed files with 14 additions and 5 deletions
+3 -5
View File
@@ -55,11 +55,11 @@ func (p *parser) NextExpression() bool {
return false return false
} }
p.first = false
if p.ref.Valid() { if p.ref.Valid() {
return true return true
} }
p.first = false
} }
} }
@@ -71,8 +71,6 @@ func (p *parser) Error() error {
return p.err return p.err
} }
var errUnexpectedByte = errors.New("expected newline but got something else")
func (p *parser) parseNewline(b []byte) ([]byte, error) { func (p *parser) parseNewline(b []byte) ([]byte, error) {
if b[0] == '\n' { if b[0] == '\n' {
return b[1:], nil return b[1:], nil
@@ -84,7 +82,7 @@ func (p *parser) parseNewline(b []byte) ([]byte, error) {
return rest, err return rest, err
} }
return nil, fmt.Errorf("parseNewline: %w - %#U", errUnexpectedByte, b[0]) return nil, newDecodeError(b[0:1], "expected newline but got %#U", b[0])
} }
func (p *parser) parseExpression(b []byte) (ast.Reference, []byte, error) { func (p *parser) parseExpression(b []byte) (ast.Reference, []byte, error) {
+11
View File
@@ -747,6 +747,17 @@ B = "data"`,
} }
}, },
}, },
{
desc: "no newline (#526)",
input: `a = 1z = 2`,
gen: func() test {
m := map[string]interface{}{}
return test{
target: &m,
err: true,
}
},
},
} }
for _, e := range examples { for _, e := range examples {