From ccf6cccee0cb9799ff3107eeb04b3f31b4c7f8c0 Mon Sep 17 00:00:00 2001 From: Juan <38849891+xoltia@users.noreply.github.com> Date: Sun, 24 Nov 2024 15:57:26 -0600 Subject: [PATCH] Fix line decrement when eof does not follow a newline --- error_test.go | 4 ++-- lex.go | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/error_test.go b/error_test.go index 80cb0c0..8e8f196 100644 --- a/error_test.go +++ b/error_test.go @@ -252,9 +252,9 @@ func TestParseError(t *testing.T) { ` | toml: error: unexpected EOF; expected '"' | - | At line 0, column 14: + | At line 1, column 14: | - | 0 | string = "test + | 1 | string = "test | ^ `, }, diff --git a/lex.go b/lex.go index cd9de46..72ba269 100644 --- a/lex.go +++ b/lex.go @@ -275,7 +275,9 @@ func (lx *lexer) errorPos(start, length int, err error) stateFn { func (lx *lexer) errorf(format string, values ...any) stateFn { if lx.atEOF { pos := lx.getPos() - pos.Line-- + if lx.pos >= 1 && lx.input[lx.pos-1] == '\n' { + pos.Line-- + } pos.Len = 1 pos.Start = lx.pos - 1 lx.items <- item{typ: itemError, pos: pos, err: fmt.Errorf(format, values...)}