@@ -19,13 +19,11 @@ package pointer
19
19
20
20
import (
21
21
"flag"
22
- "go/build"
23
22
"go/token"
24
23
"testing"
25
24
"time"
26
25
27
- "golang.org/x/tools/go/buildutil"
28
- "golang.org/x/tools/go/loader"
26
+ "golang.org/x/tools/go/packages"
29
27
"golang.org/x/tools/go/ssa"
30
28
"golang.org/x/tools/go/ssa/ssautil"
31
29
)
@@ -37,22 +35,18 @@ func TestStdlib(t *testing.T) {
37
35
t .Skip ("skipping (slow) stdlib test (use --stdlib)" )
38
36
}
39
37
40
- // Load, parse and type-check the program.
41
- ctxt := build .Default // copy
42
- ctxt .GOPATH = "" // disable GOPATH
43
- conf := loader.Config {Build : & ctxt }
44
- if _ , err := conf .FromArgs (buildutil .AllPackages (conf .Build ), true ); err != nil {
45
- t .Errorf ("FromArgs failed: %v" , err )
46
- return
38
+ cfg := & packages.Config {
39
+ Mode : packages .LoadAllSyntax ,
40
+ // Create test main packages with a main function.
41
+ Tests : true ,
47
42
}
48
-
49
- iprog , err := conf .Load ()
50
- if err != nil {
43
+ pkgs , err := packages .Load (cfg , "std" )
44
+ if err != nil || packages .PrintErrors (pkgs ) > 0 {
51
45
t .Fatalf ("Load failed: %v" , err )
52
46
}
53
47
54
48
// Create SSA packages.
55
- prog := ssautil .CreateProgram ( iprog , 0 )
49
+ prog , _ := ssautil .AllPackages ( pkgs , 0 )
56
50
prog .Build ()
57
51
58
52
numPkgs := len (prog .AllPackages ())
@@ -62,10 +56,9 @@ func TestStdlib(t *testing.T) {
62
56
63
57
// Determine the set of packages/tests to analyze.
64
58
var mains []* ssa.Package
65
- for _ , info := range iprog .InitialPackages () {
66
- ssapkg := prog .Package (info .Pkg )
67
- if main := prog .CreateTestMainPackage (ssapkg ); main != nil {
68
- mains = append (mains , main )
59
+ for _ , ssapkg := range prog .AllPackages () {
60
+ if ssapkg .Pkg .Name () == "main" && ssapkg .Func ("main" ) != nil {
61
+ mains = append (mains , ssapkg )
69
62
}
70
63
}
71
64
if mains == nil {
0 commit comments