From 92d84f6633767830ed964ebab8c3b94c77663394 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Tue, 10 Mar 2026 14:44:50 +0300 Subject: =?UTF-8?q?=D0=9E=D1=82=D0=BF=D0=BE=D0=BB=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D1=83,=20=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D0=B2=20?= =?UTF-8?q?=D0=B8=D0=B4=D0=B5=D0=B0=D0=BB=D0=B5=20=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=B5=20=D0=B5=D1=91=20=D0=BD=D0=B5=20=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=8F=D1=82=D1=8C=20=D0=B4=D0=BE=D0=BB=D0=B3=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B3=D0=BE=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parser/errors.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'parser/errors.go') diff --git a/parser/errors.go b/parser/errors.go index c2ed049..b1f839e 100644 --- a/parser/errors.go +++ b/parser/errors.go @@ -1,3 +1,20 @@ +// Package parser parses conf language. +// +// This file is part of conf library. +// Copyright (C) 2026 Alexander NeonXP Kiryukhin +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . package parser import ( @@ -39,9 +56,8 @@ func CaretErrors(err error, input string) error { if el, ok := err.(ErrorLister); ok { var buffer bytes.Buffer for _, e := range el.Errors() { - err1, shouldReturn := caretError(e, input, buffer, err) - if shouldReturn { - return err1 + if err := caretError(e, input); err != nil { + buffer.WriteString(err.Error()) } } return errors.New(buffer.String()) @@ -49,8 +65,8 @@ func CaretErrors(err error, input string) error { return err } -func caretError(e error, input string, buffer bytes.Buffer, err error) (error, bool) { - if parserErr, ok := e.(ParserError); ok { +func caretError(err error, input string) error { + if parserErr, ok := err.(ParserError); ok { _, col, off := parserErr.Pos() line := extractLine(input, off) if col >= len(line) { @@ -69,13 +85,9 @@ func caretError(e error, input string, buffer bytes.Buffer, err error) (error, b pos += 7 } } - fmt.Fprintf(&buffer, "%s\n%s\n%s\n", line, strings.Repeat(" ", pos)+"^", err.Error()) - - return err, true - } else { - return err, true + return fmt.Errorf("%s\n%s\n%w", line, strings.Repeat(" ", pos)+"^", err) } - return nil, false + return err } func extractLine(input string, initPos int) string { -- cgit v1.2.3