@@ -25,14 +25,14 @@ const (
25
25
var _ Processor = (* SortResults )(nil )
26
26
27
27
type SortResults struct {
28
- cmps map [string ]comparator
28
+ cmps map [string ]* comparator
29
29
30
30
cfg * config.Output
31
31
}
32
32
33
33
func NewSortResults (cfg * config.Config ) * SortResults {
34
34
return & SortResults {
35
- cmps : map [string ]comparator {
35
+ cmps : map [string ]* comparator {
36
36
// For sorting we are comparing (in next order):
37
37
// file names, line numbers, position, and finally - giving up.
38
38
orderNameFile : byFileName ().AddNext (byLine ().AddNext (byColumn ())),
@@ -55,7 +55,7 @@ func (sr SortResults) Process(issues []result.Issue) ([]result.Issue, error) {
55
55
sr .cfg .SortOrder = []string {orderNameFile }
56
56
}
57
57
58
- var cmps []comparator
58
+ var cmps []* comparator
59
59
for _ , name := range sr .cfg .SortOrder {
60
60
if c , ok := sr .cmps [name ]; ok {
61
61
cmps = append (cmps , c )
@@ -107,30 +107,21 @@ func (c compareResult) String() string {
107
107
}
108
108
}
109
109
110
- // comparator describes how to implement compare for two "issues".
111
- type comparator interface {
112
- Compare (a , b * result.Issue ) compareResult
113
- Next () comparator
114
- AddNext (comparator ) comparator
115
- fmt.Stringer
116
- }
117
-
118
- var _ comparator = (* baseComparator )(nil )
119
-
120
- type baseComparator struct {
110
+ // baseComparator describes how to implement compare for two "issues".
111
+ type comparator struct {
121
112
name string
122
113
compare func (a , b * result.Issue ) compareResult
123
- next comparator
114
+ next * comparator
124
115
}
125
116
126
- func (cmp * baseComparator ) Next () comparator { return cmp .next }
117
+ func (cmp * comparator ) Next () * comparator { return cmp .next }
127
118
128
- func (cmp * baseComparator ) AddNext (c comparator ) comparator {
119
+ func (cmp * comparator ) AddNext (c * comparator ) * comparator {
129
120
cmp .next = c
130
121
return cmp
131
122
}
132
123
133
- func (cmp * baseComparator ) String () string {
124
+ func (cmp * comparator ) String () string {
134
125
s := cmp .name
135
126
if cmp .Next () != nil {
136
127
s += " > " + cmp .Next ().String ()
@@ -139,7 +130,7 @@ func (cmp *baseComparator) String() string {
139
130
return s
140
131
}
141
132
142
- func (cmp * baseComparator ) Compare (a , b * result.Issue ) compareResult {
133
+ func (cmp * comparator ) Compare (a , b * result.Issue ) compareResult {
143
134
res := cmp .compare (a , b )
144
135
if ! res .isNeutral () {
145
136
return res
@@ -152,52 +143,52 @@ func (cmp *baseComparator) Compare(a, b *result.Issue) compareResult {
152
143
return res
153
144
}
154
145
155
- func byFileName () * baseComparator {
156
- return & baseComparator {
146
+ func byFileName () * comparator {
147
+ return & comparator {
157
148
name : "byFileName" ,
158
149
compare : func (a , b * result.Issue ) compareResult {
159
150
return compareResult (strings .Compare (a .FilePath (), b .FilePath ()))
160
151
},
161
152
}
162
153
}
163
154
164
- func byLine () * baseComparator {
165
- return & baseComparator {
155
+ func byLine () * comparator {
156
+ return & comparator {
166
157
name : "byLine" ,
167
158
compare : func (a , b * result.Issue ) compareResult {
168
159
return numericCompare (a .Line (), b .Line ())
169
160
},
170
161
}
171
162
}
172
163
173
- func byColumn () * baseComparator {
174
- return & baseComparator {
164
+ func byColumn () * comparator {
165
+ return & comparator {
175
166
name : "byColumn" ,
176
167
compare : func (a , b * result.Issue ) compareResult {
177
168
return numericCompare (a .Column (), b .Column ())
178
169
},
179
170
}
180
171
}
181
172
182
- func byLinter () * baseComparator {
183
- return & baseComparator {
173
+ func byLinter () * comparator {
174
+ return & comparator {
184
175
name : "byLinter" ,
185
176
compare : func (a , b * result.Issue ) compareResult {
186
177
return compareResult (strings .Compare (a .FromLinter , b .FromLinter ))
187
178
},
188
179
}
189
180
}
190
181
191
- func bySeverity () * baseComparator {
192
- return & baseComparator {
182
+ func bySeverity () * comparator {
183
+ return & comparator {
193
184
name : "bySeverity" ,
194
185
compare : func (a , b * result.Issue ) compareResult {
195
186
return severityCompare (a .Severity , b .Severity )
196
187
},
197
188
}
198
189
}
199
190
200
- func mergeComparators (cmps []comparator ) (comparator , error ) {
191
+ func mergeComparators (cmps []* comparator ) (* comparator , error ) {
201
192
if len (cmps ) == 0 {
202
193
return nil , errors .New ("no comparator" )
203
194
}
@@ -209,7 +200,7 @@ func mergeComparators(cmps []comparator) (comparator, error) {
209
200
return cmps [0 ], nil
210
201
}
211
202
212
- func findComparatorTip (cmp comparator ) comparator {
203
+ func findComparatorTip (cmp * comparator ) * comparator {
213
204
if cmp .Next () != nil {
214
205
return findComparatorTip (cmp .Next ())
215
206
}
0 commit comments