@@ -500,24 +500,7 @@ func h(error)
500
500
// t8 = phi [1: t7, 3: t4] #e
501
501
// ...
502
502
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 ))
521
504
g := p .Func ("g" )
522
505
523
506
phis := 0
@@ -566,24 +549,7 @@ func LoadPointer(addr *unsafe.Pointer) (val unsafe.Pointer)
566
549
// func init func()
567
550
// var init$guard bool
568
551
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 ))
587
553
588
554
if load := p .Func ("Load" ); load .Signature .TypeParams ().Len () != 1 {
589
555
t .Errorf ("expected a single type param T for Load got %q" , load .Signature )
@@ -619,25 +585,8 @@ var indirect = R[int].M
619
585
// var thunk func(S[int]) int
620
586
// var wrapper func(R[int]) int
621
587
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
-
636
588
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 )
641
590
642
591
for _ , entry := range []struct {
643
592
name string // name of the package variable
@@ -800,24 +749,7 @@ func sliceMax(s []int) []int { return s[a():b():c()] }
800
749
801
750
`
802
751
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 ))
821
753
822
754
for _ , item := range []struct {
823
755
fn string
@@ -1031,23 +963,8 @@ func TestSyntax(t *testing.T) {
1031
963
var _ = F[P] // unreferenced => not instantiated
1032
964
`
1033
965
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
1051
968
1052
969
// Collect syntax information for all of the functions.
1053
970
got := make (map [string ]string )
@@ -1120,21 +1037,7 @@ func TestLabels(t *testing.T) {
1120
1037
func main() { _:println(1); _:println(2)}` ,
1121
1038
}
1122
1039
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 ))
1138
1041
}
1139
1042
}
1140
1043
@@ -1168,22 +1071,8 @@ func TestIssue67079(t *testing.T) {
1168
1071
1169
1072
// Load the package.
1170
1073
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
1187
1076
var g errgroup.Group
1188
1077
1189
1078
// Access bodies of all functions.
@@ -1202,7 +1091,7 @@ func TestIssue67079(t *testing.T) {
1202
1091
1203
1092
// Force building of wrappers.
1204
1093
g .Go (func () error {
1205
- ptrT := types .NewPointer (pkg .Scope ().Lookup ("T" ).Type ())
1094
+ ptrT := types .NewPointer (ppkg . Types .Scope ().Lookup ("T" ).Type ())
1206
1095
ptrTf := types .NewMethodSet (ptrT ).At (0 ) // (*T).f symbol
1207
1096
prog .MethodValue (ptrTf )
1208
1097
return nil
0 commit comments