Skip to content

Commit f70550d

Browse files
xieyuschengopherbot
authored andcommitted
go/ssa: migrate some tests in build_test.go away from loader
For golang/go#69556 Change-Id: I9146de749112d046b9d27f012d2de25f9ff86382 Reviewed-on: https://go-review.googlesource.com/c/tools/+/614955 Reviewed-by: Alan Donovan <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Auto-Submit: Alan Donovan <[email protected]> Reviewed-by: David Chase <[email protected]>
1 parent 01bd772 commit f70550d

File tree

1 file changed

+10
-121
lines changed

1 file changed

+10
-121
lines changed

go/ssa/builder_test.go

+10-121
Original file line numberDiff line numberDiff line change
@@ -500,24 +500,7 @@ func h(error)
500500
// t8 = phi [1: t7, 3: t4] #e
501501
// ...
502502

503-
// Parse
504-
var conf loader.Config
505-
f, err := conf.ParseFile("<input>", input)
506-
if err != nil {
507-
t.Fatalf("parse: %v", err)
508-
}
509-
conf.CreateFromFiles("p", f)
510-
511-
// Load
512-
lprog, err := conf.Load()
513-
if err != nil {
514-
t.Fatalf("Load: %v", err)
515-
}
516-
517-
// Create and build SSA
518-
prog := ssautil.CreateProgram(lprog, ssa.BuilderMode(0))
519-
p := prog.Package(lprog.Package("p").Pkg)
520-
p.Build()
503+
p, _ := buildPackage(t, input, ssa.BuilderMode(0))
521504
g := p.Func("g")
522505

523506
phis := 0
@@ -566,24 +549,7 @@ func LoadPointer(addr *unsafe.Pointer) (val unsafe.Pointer)
566549
// func init func()
567550
// var init$guard bool
568551

569-
// Parse
570-
var conf loader.Config
571-
f, err := conf.ParseFile("<input>", input)
572-
if err != nil {
573-
t.Fatalf("parse: %v", err)
574-
}
575-
conf.CreateFromFiles("p", f)
576-
577-
// Load
578-
lprog, err := conf.Load()
579-
if err != nil {
580-
t.Fatalf("Load: %v", err)
581-
}
582-
583-
// Create and build SSA
584-
prog := ssautil.CreateProgram(lprog, ssa.BuilderMode(0))
585-
p := prog.Package(lprog.Package("p").Pkg)
586-
p.Build()
552+
p, _ := buildPackage(t, input, ssa.BuilderMode(0))
587553

588554
if load := p.Func("Load"); load.Signature.TypeParams().Len() != 1 {
589555
t.Errorf("expected a single type param T for Load got %q", load.Signature)
@@ -619,25 +585,8 @@ var indirect = R[int].M
619585
// var thunk func(S[int]) int
620586
// var wrapper func(R[int]) int
621587

622-
// Parse
623-
var conf loader.Config
624-
f, err := conf.ParseFile("<input>", input)
625-
if err != nil {
626-
t.Fatalf("parse: %v", err)
627-
}
628-
conf.CreateFromFiles("p", f)
629-
630-
// Load
631-
lprog, err := conf.Load()
632-
if err != nil {
633-
t.Fatalf("Load: %v", err)
634-
}
635-
636588
for _, mode := range []ssa.BuilderMode{ssa.BuilderMode(0), ssa.InstantiateGenerics} {
637-
// Create and build SSA
638-
prog := ssautil.CreateProgram(lprog, mode)
639-
p := prog.Package(lprog.Package("p").Pkg)
640-
p.Build()
589+
p, _ := buildPackage(t, input, mode)
641590

642591
for _, entry := range []struct {
643592
name string // name of the package variable
@@ -800,24 +749,7 @@ func sliceMax(s []int) []int { return s[a():b():c()] }
800749
801750
`
802751

803-
// Parse
804-
var conf loader.Config
805-
f, err := conf.ParseFile("<input>", input)
806-
if err != nil {
807-
t.Fatalf("parse: %v", err)
808-
}
809-
conf.CreateFromFiles("p", f)
810-
811-
// Load
812-
lprog, err := conf.Load()
813-
if err != nil {
814-
t.Fatalf("Load: %v", err)
815-
}
816-
817-
// Create and build SSA
818-
prog := ssautil.CreateProgram(lprog, ssa.BuilderMode(0))
819-
p := prog.Package(lprog.Package("p").Pkg)
820-
p.Build()
752+
p, _ := buildPackage(t, input, ssa.BuilderMode(0))
821753

822754
for _, item := range []struct {
823755
fn string
@@ -1031,23 +963,8 @@ func TestSyntax(t *testing.T) {
1031963
var _ = F[P] // unreferenced => not instantiated
1032964
`
1033965

1034-
// Parse
1035-
var conf loader.Config
1036-
f, err := conf.ParseFile("<input>", input)
1037-
if err != nil {
1038-
t.Fatalf("parse: %v", err)
1039-
}
1040-
conf.CreateFromFiles("p", f)
1041-
1042-
// Load
1043-
lprog, err := conf.Load()
1044-
if err != nil {
1045-
t.Fatalf("Load: %v", err)
1046-
}
1047-
1048-
// Create and build SSA
1049-
prog := ssautil.CreateProgram(lprog, ssa.InstantiateGenerics)
1050-
prog.Build()
966+
p, _ := buildPackage(t, input, ssa.InstantiateGenerics)
967+
prog := p.Prog
1051968

1052969
// Collect syntax information for all of the functions.
1053970
got := make(map[string]string)
@@ -1120,21 +1037,7 @@ func TestLabels(t *testing.T) {
11201037
func main() { _:println(1); _:println(2)}`,
11211038
}
11221039
for _, test := range tests {
1123-
conf := loader.Config{Fset: token.NewFileSet()}
1124-
f, err := parser.ParseFile(conf.Fset, "<input>", test, 0)
1125-
if err != nil {
1126-
t.Errorf("parse error: %s", err)
1127-
return
1128-
}
1129-
conf.CreateFromFiles("main", f)
1130-
iprog, err := conf.Load()
1131-
if err != nil {
1132-
t.Error(err)
1133-
continue
1134-
}
1135-
prog := ssautil.CreateProgram(iprog, ssa.BuilderMode(0))
1136-
pkg := prog.Package(iprog.Created[0].Pkg)
1137-
pkg.Build()
1040+
buildPackage(t, test, ssa.BuilderMode(0))
11381041
}
11391042
}
11401043

@@ -1168,22 +1071,8 @@ func TestIssue67079(t *testing.T) {
11681071

11691072
// Load the package.
11701073
const src = `package p; type T int; func (T) f() {}; var _ = (*T).f`
1171-
conf := loader.Config{Fset: token.NewFileSet()}
1172-
f, err := parser.ParseFile(conf.Fset, "p.go", src, 0)
1173-
if err != nil {
1174-
t.Fatal(err)
1175-
}
1176-
conf.CreateFromFiles("p", f)
1177-
iprog, err := conf.Load()
1178-
if err != nil {
1179-
t.Fatal(err)
1180-
}
1181-
pkg := iprog.Created[0].Pkg
1182-
1183-
// Create and build SSA program.
1184-
prog := ssautil.CreateProgram(iprog, ssa.BuilderMode(0))
1185-
prog.Build()
1186-
1074+
spkg, ppkg := buildPackage(t, src, ssa.BuilderMode(0))
1075+
prog := spkg.Prog
11871076
var g errgroup.Group
11881077

11891078
// Access bodies of all functions.
@@ -1202,7 +1091,7 @@ func TestIssue67079(t *testing.T) {
12021091

12031092
// Force building of wrappers.
12041093
g.Go(func() error {
1205-
ptrT := types.NewPointer(pkg.Scope().Lookup("T").Type())
1094+
ptrT := types.NewPointer(ppkg.Types.Scope().Lookup("T").Type())
12061095
ptrTf := types.NewMethodSet(ptrT).At(0) // (*T).f symbol
12071096
prog.MethodValue(ptrTf)
12081097
return nil

0 commit comments

Comments
 (0)