diff options
Diffstat (limited to 'go/analysis/passes/buildssa/buildssa_test.go')
-rw-r--r-- | go/analysis/passes/buildssa/buildssa_test.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/go/analysis/passes/buildssa/buildssa_test.go b/go/analysis/passes/buildssa/buildssa_test.go index 0b381500b..52f7e7aa6 100644 --- a/go/analysis/passes/buildssa/buildssa_test.go +++ b/go/analysis/passes/buildssa/buildssa_test.go @@ -11,6 +11,7 @@ import ( "golang.org/x/tools/go/analysis/analysistest" "golang.org/x/tools/go/analysis/passes/buildssa" + "golang.org/x/tools/internal/typeparams" ) func Test(t *testing.T) { @@ -27,3 +28,39 @@ func Test(t *testing.T) { } } } + +func TestGenericDecls(t *testing.T) { + if !typeparams.Enabled { + t.Skip("TestGenericDecls requires type parameters.") + } + testdata := analysistest.TestData() + result := analysistest.Run(t, testdata, buildssa.Analyzer, "b")[0].Result + + ssainfo := result.(*buildssa.SSA) + got := fmt.Sprint(ssainfo.SrcFuncs) + want := `[(*b.Pointer[T]).Load b.Load b.LoadPointer]` + if got != want { + t.Errorf("SSA.SrcFuncs = %s, want %s", got, want) + for _, f := range ssainfo.SrcFuncs { + f.WriteTo(os.Stderr) + } + } +} + +func TestImporting(t *testing.T) { + if !typeparams.Enabled { + t.Skip("TestImporting depends on testdata/b/b/go which uses type parameters.") + } + testdata := analysistest.TestData() + result := analysistest.Run(t, testdata, buildssa.Analyzer, "c")[0].Result + + ssainfo := result.(*buildssa.SSA) + got := fmt.Sprint(ssainfo.SrcFuncs) + want := `[c.A c.B]` + if got != want { + t.Errorf("SSA.SrcFuncs = %s, want %s", got, want) + for _, f := range ssainfo.SrcFuncs { + f.WriteTo(os.Stderr) + } + } +} |