Skip to content
This repository was archived by the owner on Mar 27, 2025. It is now read-only.

Commit 92859c1

Browse files
committed
order feedback before returning it
1 parent 01841e8 commit 92859c1

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

base.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package gparselib
22

33
import (
4+
"cmp"
45
"errors"
56
"fmt"
7+
"slices"
68
"strconv"
79
"strings"
810
)
@@ -126,6 +128,13 @@ func (pd *ParseData) CleanFeedback(cleanEnd bool) {
126128
// GetFeedback returns parser errors as a single error and
127129
// additional feedback.
128130
func (pd *ParseData) GetFeedback() (string, error) {
131+
slices.SortFunc(pd.Result.Feedback, func(a, b *FeedbackItem) int {
132+
if n := cmp.Compare(a.Pos, b.Pos); n != 0 {
133+
return n
134+
}
135+
// If positions are equal, order by message
136+
return strings.Compare(a.Msg.String(), b.Msg.String())
137+
})
129138
return feedbackInfo(pd.Result), feedbackError(pd.Result)
130139
}
131140
func feedbackError(pr *ParseResult) error {

base_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,9 +334,11 @@ func TestGetFeedback(t *testing.T) {
334334
Kind: FeedbackError,
335335
Msg: &parseError{myErr: "err 2"},
336336
}, {
337+
Pos: 1,
337338
Kind: FeedbackWarning,
338339
Msg: &parseMessage{msg: "warn 2"},
339340
}, {
341+
Pos: 2,
340342
Kind: FeedbackInfo,
341343
Msg: &parseMessage{msg: "info 2"},
342344
},

0 commit comments

Comments
 (0)