test: use goexperiment.genericmethods for tests Change-Id: I0f0627122a54e88a18d1547d9d5ea6a1c02b72dd Reviewed-on: https://go-review.googlesource.com/c/go/+/772541 Reviewed-by: Robert Griesemer <gri@google.com> LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/src/cmd/compile/internal/importer/gcimporter_test.go b/src/cmd/compile/internal/importer/gcimporter_test.go index 6513370..11e4ee6 100644 --- a/src/cmd/compile/internal/importer/gcimporter_test.go +++ b/src/cmd/compile/internal/importer/gcimporter_test.go
@@ -720,72 +720,3 @@ t.Errorf("Check failed: %v", err) } } - -func TestGenMeth(t *testing.T) { - t.SkipNow() // TODO(mark): Turn on with UIR V4. - testenv.MustHaveGoBuild(t) - - // This package only handles gc export data. - if runtime.Compiler != "gc" { - t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler) - } - - tmpdir := t.TempDir() - testoutdir := filepath.Join(tmpdir, "testdata") - if err := os.Mkdir(testoutdir, 0700); err != nil { - t.Fatalf("making output dir: %v", err) - } - - compile(t, "testdata", "genmeth.go", testoutdir, nil) - - genmeth, err := Import(make(map[string]*types2.Package), "./testdata/genmeth", tmpdir, nil) - if err != nil { - t.Fatal(err) - } - - check := func(pkgname, src string, imports importMap) (*types2.Package, error) { - f, err := syntax.Parse(syntax.NewFileBase(pkgname), strings.NewReader(src), nil, nil, 0) - if err != nil { - return nil, err - } - config := &types2.Config{ - Importer: imports, - } - return config.Check(pkgname, []*syntax.File{f}, nil) - } - - const pSrc = `package p - -import "genmeth" - -func _() { - var ex func(int) genmeth.List[int] - var fl func(genmeth.List[int]) genmeth.List[int] - - var l genmeth.List[int] - l = l.Map(ex).FlatMap(fl) - - var bl genmeth.BiList[int, any] - bl = bl.MapKeys(ex).Flip().FlatMapValues(fl).Flip() - - var id func(int) int - - var op genmeth.Option[int] - var _ int = op.MapIfPresent(id).Get() - - var ol genmeth.OrderedList[int] - var _ int = ol.Min().Get() - - var b genmeth.Box[int] - b.Set(42) - var _ int = b.Get() -} -` - - importer := importMap{ - "genmeth": genmeth, - } - if _, err := check("p", pSrc, importer); err != nil { - t.Errorf("Check failed: %v", err) - } -}
diff --git a/src/cmd/compile/internal/importer/genmeth_test.go b/src/cmd/compile/internal/importer/genmeth_test.go new file mode 100644 index 0000000..fa827a7 --- /dev/null +++ b/src/cmd/compile/internal/importer/genmeth_test.go
@@ -0,0 +1,86 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build goexperiment.genericmethods + +package importer + +import ( + "cmd/compile/internal/syntax" + "cmd/compile/internal/types2" + "internal/testenv" + "os" + "path/filepath" + "runtime" + "strings" + "testing" +) + +func TestGenMeth(t *testing.T) { + testenv.MustHaveGoBuild(t) + + // This package only handles gc export data. + if runtime.Compiler != "gc" { + t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler) + } + + tmpdir := t.TempDir() + testoutdir := filepath.Join(tmpdir, "testdata") + if err := os.Mkdir(testoutdir, 0700); err != nil { + t.Fatalf("making output dir: %v", err) + } + + compile(t, "testdata", "genmeth.go", testoutdir, nil) + + genmeth, err := Import(make(map[string]*types2.Package), "./testdata/genmeth", tmpdir, nil) + if err != nil { + t.Fatal(err) + } + + check := func(pkgname, src string, imports importMap) (*types2.Package, error) { + f, err := syntax.Parse(syntax.NewFileBase(pkgname), strings.NewReader(src), nil, nil, 0) + if err != nil { + return nil, err + } + config := &types2.Config{ + Importer: imports, + } + return config.Check(pkgname, []*syntax.File{f}, nil) + } + + const pSrc = `package p + +import "genmeth" + +func _() { + var ex func(int) genmeth.List[int] + var fl func(genmeth.List[int]) genmeth.List[int] + + var l genmeth.List[int] + l = l.Map(ex).FlatMap(fl) + + var bl genmeth.BiList[int, any] + bl = bl.MapKeys(ex).Flip().FlatMapValues(fl).Flip() + + var id func(int) int + + var op genmeth.Option[int] + var _ int = op.MapIfPresent(id).Get() + + var ol genmeth.OrderedList[int] + var _ int = ol.Min().Get() + + var b genmeth.Box[int] + b.Set(42) + var _ int = b.Get() +} +` + + importer := importMap{ + "genmeth": genmeth, + } + if _, err := check("p", pSrc, importer); err != nil { + t.Errorf("Check failed: %v", err) + } +}
diff --git a/src/go/internal/gcimporter/gcimporter_test.go b/src/go/internal/gcimporter/gcimporter_test.go index d2a8e3a..c4861c7 100644 --- a/src/go/internal/gcimporter/gcimporter_test.go +++ b/src/go/internal/gcimporter/gcimporter_test.go
@@ -827,74 +827,3 @@ } wg.Wait() } - -func TestGenMeth(t *testing.T) { - t.SkipNow() // TODO(mark): Turn on with UIR V4. - testenv.MustHaveGoBuild(t) - - // This package only handles gc export data. - if runtime.Compiler != "gc" { - t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler) - } - - tmpdir := t.TempDir() - testoutdir := filepath.Join(tmpdir, "testdata") - if err := os.Mkdir(testoutdir, 0700); err != nil { - t.Fatalf("making output dir: %v", err) - } - - compile(t, "testdata", "genmeth.go", testoutdir, nil) - - fset := token.NewFileSet() - - genmeth, err := Import(fset, make(map[string]*types.Package), "./testdata/genmeth", tmpdir, nil) - if err != nil { - t.Fatal(err) - } - - check := func(pkgname, src string, imports importMap) (*types.Package, error) { - f, err := parser.ParseFile(fset, "genmeth.go", src, 0) - if err != nil { - return nil, err - } - config := &types.Config{ - Importer: imports, - } - return config.Check(pkgname, fset, []*ast.File{f}, nil) - } - - const pSrc = `package p - -import "genmeth" - -func _() { - var ex func(int) genmeth.List[int] - var fl func(genmeth.List[int]) genmeth.List[int] - - var l genmeth.List[int] - l = l.Map(ex).FlatMap(fl) - - var bl genmeth.BiList[int, any] - bl = bl.MapKeys(ex).Flip().FlatMapValues(fl).Flip() - - var id func(int) int - - var op genmeth.Option[int] - var _ int = op.MapIfPresent(id).Get() - - var ol genmeth.OrderedList[int] - var _ int = ol.Min().Get() - - var b genmeth.Box[int] - b.Set(42) - var _ int = b.Get() -} -` - - importer := importMap{ - "genmeth": genmeth, - } - if _, err := check("p", pSrc, importer); err != nil { - t.Errorf("Check failed: %v", err) - } -}
diff --git a/src/go/internal/gcimporter/genmeth_test.go b/src/go/internal/gcimporter/genmeth_test.go new file mode 100644 index 0000000..63b8858 --- /dev/null +++ b/src/go/internal/gcimporter/genmeth_test.go
@@ -0,0 +1,92 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build goexperiment.genericmethods + +package gcimporter_test + +import ( + "internal/testenv" + "os" + "path/filepath" + "runtime" + "testing" + + "go/ast" + "go/parser" + "go/token" + "go/types" + + . "go/internal/gcimporter" +) + +func TestGenMeth(t *testing.T) { + testenv.MustHaveGoBuild(t) + + // This package only handles gc export data. + if runtime.Compiler != "gc" { + t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler) + } + + tmpdir := t.TempDir() + testoutdir := filepath.Join(tmpdir, "testdata") + if err := os.Mkdir(testoutdir, 0700); err != nil { + t.Fatalf("making output dir: %v", err) + } + + compile(t, "testdata", "genmeth.go", testoutdir, nil) + + fset := token.NewFileSet() + + genmeth, err := Import(fset, make(map[string]*types.Package), "./testdata/genmeth", tmpdir, nil) + if err != nil { + t.Fatal(err) + } + + check := func(pkgname, src string, imports importMap) (*types.Package, error) { + f, err := parser.ParseFile(fset, "genmeth.go", src, 0) + if err != nil { + return nil, err + } + config := &types.Config{ + Importer: imports, + } + return config.Check(pkgname, fset, []*ast.File{f}, nil) + } + + const pSrc = `package p + +import "genmeth" + +func _() { + var ex func(int) genmeth.List[int] + var fl func(genmeth.List[int]) genmeth.List[int] + + var l genmeth.List[int] + l = l.Map(ex).FlatMap(fl) + + var bl genmeth.BiList[int, any] + bl = bl.MapKeys(ex).Flip().FlatMapValues(fl).Flip() + + var id func(int) int + + var op genmeth.Option[int] + var _ int = op.MapIfPresent(id).Get() + + var ol genmeth.OrderedList[int] + var _ int = ol.Min().Get() + + var b genmeth.Box[int] + b.Set(42) + var _ int = b.Get() +} +` + + importer := importMap{ + "genmeth": genmeth, + } + if _, err := check("p", pSrc, importer); err != nil { + t.Errorf("Check failed: %v", err) + } +}
diff --git a/test/genmeth.go b/test/genmeth.go index 41c23a0..55f7b89 100644 --- a/test/genmeth.go +++ b/test/genmeth.go
@@ -1,4 +1,5 @@ -// skip +// run +//go:build goexperiment.genericmethods // Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style
diff --git a/test/genmeth1.go b/test/genmeth1.go index 311b82d..9effd43 100644 --- a/test/genmeth1.go +++ b/test/genmeth1.go
@@ -1,4 +1,5 @@ -// skip +// run +//go:build goexperiment.genericmethods // Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style
diff --git a/test/genmeth2.go b/test/genmeth2.go index 259ccb5..1d1c6af 100644 --- a/test/genmeth2.go +++ b/test/genmeth2.go
@@ -1,4 +1,5 @@ -// skip +// run +//go:build goexperiment.genericmethods // Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style