File tree 2 files changed +17
-3
lines changed
pkg/golinters/goanalysis/checker
2 files changed +17
-3
lines changed Original file line number Diff line number Diff line change 5
5
6
6
fast_build : FORCE
7
7
go build -o golangci-lint ./cmd/golangci-lint
8
+ build_race : FORCE
9
+ go build -race -o golangci-lint ./cmd/golangci-lint
8
10
build : golangci-lint
9
11
clean :
10
12
rm -f golangci-lint test/path
11
13
rm -rf tools
12
- .PHONY : fast_build build clean
14
+ .PHONY : fast_build build build_race clean
13
15
14
16
# Test
15
17
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ import (
19
19
"os"
20
20
"reflect"
21
21
"runtime"
22
+ "runtime/debug"
22
23
"runtime/pprof"
23
24
"runtime/trace"
24
25
"sort"
@@ -285,11 +286,17 @@ func (act *action) String() string {
285
286
func execAll (actions []* action ) {
286
287
sequential := dbg ('p' )
287
288
var wg sync.WaitGroup
288
- for _ , act := range actions {
289
+ panics := make ([]interface {}, len (actions ))
290
+ for i , act := range actions {
289
291
wg .Add (1 )
290
292
work := func (act * action ) {
293
+ defer func () {
294
+ wg .Done ()
295
+ if p := recover (); p != nil {
296
+ panics [i ] = fmt .Errorf ("%s: %s" , p , debug .Stack ())
297
+ }
298
+ }()
291
299
act .exec ()
292
- wg .Done ()
293
300
}
294
301
if sequential {
295
302
work (act )
@@ -298,6 +305,11 @@ func execAll(actions []*action) {
298
305
}
299
306
}
300
307
wg .Wait ()
308
+ for _ , p := range panics {
309
+ if p != nil {
310
+ panic (p )
311
+ }
312
+ }
301
313
}
302
314
303
315
func (act * action ) exec () { act .once .Do (act .execOnce ) }
You can’t perform that action at this time.
0 commit comments