github.com/jujuyuki/gospal@v1.0.1-0.20210215170718-af79fae13b20/ssa/util.go (about) 1 package ssa 2 3 import ( 4 "golang.org/x/tools/go/ssa" 5 "golang.org/x/tools/go/ssa/ssautil" 6 ) 7 8 // MainPkgs returns the main packages in the program. 9 func MainPkgs(prog *ssa.Program, tests bool) ([]*ssa.Package, error) { 10 pkgs := prog.AllPackages() 11 12 var mains []*ssa.Package 13 if tests { 14 for _, pkg := range pkgs { 15 if main := prog.CreateTestMainPackage(pkg); main != nil { 16 mains = append(mains, main) 17 } 18 } 19 if mains == nil { 20 return nil, ErrNoTestMainPkgs 21 } 22 return mains, nil 23 } 24 25 mains = append(mains, ssautil.MainPackages(pkgs)...) 26 if len(mains) == 0 { 27 return nil, ErrNoMainPkgs 28 } 29 return mains, nil 30 }