diff --git a/parser.go b/parser.go index bf83cd9..7191336 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 7d1bd07..b0f62d2 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 {