From 7a4e31b937bb4da4cec6b7c9502b95216d1b1704 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Sat, 2 Sep 2023 01:06:01 +0000 Subject: [PATCH] basic: refactor error handling Signed-off-by: Alejandro Mery --- basic/error.go | 22 ++++++++++------------ basic/token.go | 4 +++- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/basic/error.go b/basic/error.go index fec162d..24a9c17 100644 --- a/basic/error.go +++ b/basic/error.go @@ -10,24 +10,22 @@ var ( errInvalidToken = errors.New("invalid token") ) -func newErrInvalidToken(t *token) *lexer.Error { - err := &lexer.Error{ - Line: t.pos.Line, - Column: t.pos.Column, - Content: t.value, - Err: errInvalidToken, - } - return err -} - -func (dec *decoder) OnError(pos lexer.Position, content string, err error) error { - err = &lexer.Error{ +func newError(pos lexer.Position, content, hint string, err error) *lexer.Error { + return &lexer.Error{ Line: pos.Line, Column: pos.Column, Content: content, + Hint: hint, Err: err, } +} +func newErrInvalidToken(t *token) *lexer.Error { + return newError(t.pos, t.value, "", errInvalidToken) +} + +func (dec *decoder) OnError(pos lexer.Position, content string, err error) error { + err = newError(pos, content, "", err) dec.executeFinal() return err } diff --git a/basic/token.go b/basic/token.go index 4f2103b..fc2862b 100644 --- a/basic/token.go +++ b/basic/token.go @@ -149,6 +149,8 @@ func (dec *decoder) OnToken(pos lexer.Position, typ parser.TokenType, value stri return nil default: // unacceptable - return newErrInvalidToken(t) + err := newErrInvalidToken(t) + dec.executeFinal() + return err } }