@@ -25,14 +25,14 @@ const (
2525var _ Processor = (* SortResults )(nil )
2626
2727type SortResults struct {
28- cmps map [string ]comparator
28+ cmps map [string ]* comparator
2929
3030 cfg * config.Output
3131}
3232
3333func NewSortResults (cfg * config.Config ) * SortResults {
3434 return & SortResults {
35- cmps : map [string ]comparator {
35+ cmps : map [string ]* comparator {
3636 // For sorting we are comparing (in next order):
3737 // file names, line numbers, position, and finally - giving up.
3838 orderNameFile : byFileName ().AddNext (byLine ().AddNext (byColumn ())),
@@ -55,7 +55,7 @@ func (sr SortResults) Process(issues []result.Issue) ([]result.Issue, error) {
5555 sr .cfg .SortOrder = []string {orderNameFile }
5656 }
5757
58- var cmps []comparator
58+ var cmps []* comparator
5959 for _ , name := range sr .cfg .SortOrder {
6060 if c , ok := sr .cmps [name ]; ok {
6161 cmps = append (cmps , c )
@@ -107,30 +107,21 @@ func (c compareResult) String() string {
107107 }
108108}
109109
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 {
121112 name string
122113 compare func (a , b * result.Issue ) compareResult
123- next comparator
114+ next * comparator
124115}
125116
126- func (cmp * baseComparator ) Next () comparator { return cmp .next }
117+ func (cmp * comparator ) Next () * comparator { return cmp .next }
127118
128- func (cmp * baseComparator ) AddNext (c comparator ) comparator {
119+ func (cmp * comparator ) AddNext (c * comparator ) * comparator {
129120 cmp .next = c
130121 return cmp
131122}
132123
133- func (cmp * baseComparator ) String () string {
124+ func (cmp * comparator ) String () string {
134125 s := cmp .name
135126 if cmp .Next () != nil {
136127 s += " > " + cmp .Next ().String ()
@@ -139,7 +130,7 @@ func (cmp *baseComparator) String() string {
139130 return s
140131}
141132
142- func (cmp * baseComparator ) Compare (a , b * result.Issue ) compareResult {
133+ func (cmp * comparator ) Compare (a , b * result.Issue ) compareResult {
143134 res := cmp .compare (a , b )
144135 if ! res .isNeutral () {
145136 return res
@@ -152,52 +143,52 @@ func (cmp *baseComparator) Compare(a, b *result.Issue) compareResult {
152143 return res
153144}
154145
155- func byFileName () * baseComparator {
156- return & baseComparator {
146+ func byFileName () * comparator {
147+ return & comparator {
157148 name : "byFileName" ,
158149 compare : func (a , b * result.Issue ) compareResult {
159150 return compareResult (strings .Compare (a .FilePath (), b .FilePath ()))
160151 },
161152 }
162153}
163154
164- func byLine () * baseComparator {
165- return & baseComparator {
155+ func byLine () * comparator {
156+ return & comparator {
166157 name : "byLine" ,
167158 compare : func (a , b * result.Issue ) compareResult {
168159 return numericCompare (a .Line (), b .Line ())
169160 },
170161 }
171162}
172163
173- func byColumn () * baseComparator {
174- return & baseComparator {
164+ func byColumn () * comparator {
165+ return & comparator {
175166 name : "byColumn" ,
176167 compare : func (a , b * result.Issue ) compareResult {
177168 return numericCompare (a .Column (), b .Column ())
178169 },
179170 }
180171}
181172
182- func byLinter () * baseComparator {
183- return & baseComparator {
173+ func byLinter () * comparator {
174+ return & comparator {
184175 name : "byLinter" ,
185176 compare : func (a , b * result.Issue ) compareResult {
186177 return compareResult (strings .Compare (a .FromLinter , b .FromLinter ))
187178 },
188179 }
189180}
190181
191- func bySeverity () * baseComparator {
192- return & baseComparator {
182+ func bySeverity () * comparator {
183+ return & comparator {
193184 name : "bySeverity" ,
194185 compare : func (a , b * result.Issue ) compareResult {
195186 return severityCompare (a .Severity , b .Severity )
196187 },
197188 }
198189}
199190
200- func mergeComparators (cmps []comparator ) (comparator , error ) {
191+ func mergeComparators (cmps []* comparator ) (* comparator , error ) {
201192 if len (cmps ) == 0 {
202193 return nil , errors .New ("no comparator" )
203194 }
@@ -209,7 +200,7 @@ func mergeComparators(cmps []comparator) (comparator, error) {
209200 return cmps [0 ], nil
210201}
211202
212- func findComparatorTip (cmp comparator ) comparator {
203+ func findComparatorTip (cmp * comparator ) * comparator {
213204 if cmp .Next () != nil {
214205 return findComparatorTip (cmp .Next ())
215206 }
0 commit comments