From 5fef90b943ae31b72b5c192149e7f21303010f7e Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Fri, 23 Apr 2021 20:04:14 -0400 Subject: [PATCH] parser: require \n after parsing integer in kv Fixes #526 --- parser.go | 8 +++----- unmarshaler_test.go | 11 +++++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/parser.go b/parser.go index bf83cd93..71913369 100644 --- a/parser.go +++ b/parser.go @@ -55,11 +55,11 @@ func (p *parser) NextExpression() bool { return false } + p.first = false + if p.ref.Valid() { return true } - - p.first = false } } @@ -71,8 +71,6 @@ func (p *parser) Error() error { return p.err } -var errUnexpectedByte = errors.New("expected newline but got something else") - func (p *parser) parseNewline(b []byte) ([]byte, error) { if b[0] == '\n' { return b[1:], nil @@ -84,7 +82,7 @@ func (p *parser) parseNewline(b []byte) ([]byte, error) { 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) { diff --git a/unmarshaler_test.go b/unmarshaler_test.go index 7d1bd07d..b0f62d23 100644 --- a/unmarshaler_test.go +++ b/unmarshaler_test.go @@ -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 {