diff --git a/go/analysis/internal/facts/facts.go b/go/analysis/internal/facts/facts.go index 07984521c3..1fb69c6159 100644 --- a/go/analysis/internal/facts/facts.go +++ b/go/analysis/internal/facts/facts.go @@ -101,11 +101,13 @@ func (s *Set) ExportObjectFact(obj types.Object, fact analysis.Fact) { func (s *Set) AllObjectFacts(filter map[reflect.Type]bool) []analysis.ObjectFact { var facts []analysis.ObjectFact + s.mu.Lock() for k, v := range s.m { if k.obj != nil && filter[k.t] { facts = append(facts, analysis.ObjectFact{Object: k.obj, Fact: v}) } } + s.mu.Unlock() return facts } @@ -134,11 +136,13 @@ func (s *Set) ExportPackageFact(fact analysis.Fact) { func (s *Set) AllPackageFacts(filter map[reflect.Type]bool) []analysis.PackageFact { var facts []analysis.PackageFact + s.mu.Lock() for k, v := range s.m { if k.obj == nil && filter[k.t] { facts = append(facts, analysis.PackageFact{Package: k.pkg, Fact: v}) } } + s.mu.Unlock() return facts }