summaryrefslogtreecommitdiff
path: root/src/go/internal
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2019-05-01 10:40:30 -0400
committerThan McIntosh <thanm@google.com>2019-05-01 14:59:51 +0000
commitab5cee538ae30cab8cc7ecc97f51a051d767dcb0 (patch)
treebe3d6c4a9a782331ef7e8f194426653cbbd5a052 /src/go/internal
parent40036a99a07ee89f59864c42af056bb5e33e696e (diff)
downloadgo-git-ab5cee538ae30cab8cc7ecc97f51a051d767dcb0.tar.gz
go/internal/gccgoimporter: skip new test with aliases with old gccgo
Add the issue31540 test to the list of tests that needs to be skipped with old copies of gccgo. Along the way, add an explicit field to the importer test struct that can be used to tag the test (as opposed to having special cases by name in the test routine), so as to make it easier to remember to tag testcases correctly. Fixes #31764. Change-Id: Ib9d98fea2df8ce0b51e5a886fb2c4acd6db490ff Reviewed-on: https://go-review.googlesource.com/c/go/+/174738 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/go/internal')
-rw-r--r--src/go/internal/gccgoimporter/importer_test.go23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/go/internal/gccgoimporter/importer_test.go b/src/go/internal/gccgoimporter/importer_test.go
index 21a3bcbe98..beb39e6089 100644
--- a/src/go/internal/gccgoimporter/importer_test.go
+++ b/src/go/internal/gccgoimporter/importer_test.go
@@ -19,6 +19,7 @@ import (
type importerTest struct {
pkgpath, name, want, wantval string
wantinits []string
+ gccgoVersion int // minimum gccgo version (0 => any)
}
func runImporterTest(t *testing.T, imp Importer, initmap map[*types.Package]InitData, test *importerTest) {
@@ -71,6 +72,8 @@ func runImporterTest(t *testing.T, imp Importer, initmap map[*types.Package]Init
}
}
+// When adding tests to this list, be sure to set the 'gccgoVersion'
+// field if the testcases uses a "recent" Go addition (ex: aliases).
var importerTests = [...]importerTest{
{pkgpath: "pointer", name: "Int8Ptr", want: "type Int8Ptr *int8"},
{pkgpath: "complexnums", name: "NN", want: "const NN untyped complex", wantval: "(-1 + -1i)"},
@@ -84,15 +87,15 @@ var importerTests = [...]importerTest{
{pkgpath: "unicode", name: "MaxRune", want: "const MaxRune untyped rune", wantval: "1114111"},
{pkgpath: "imports", wantinits: []string{"imports..import", "fmt..import"}},
{pkgpath: "importsar", name: "Hello", want: "var Hello string"},
- {pkgpath: "aliases", name: "A14", want: "type A14 = func(int, T0) chan T2"},
- {pkgpath: "aliases", name: "C0", want: "type C0 struct{f1 C1; f2 C1}"},
+ {pkgpath: "aliases", name: "A14", gccgoVersion: 7, want: "type A14 = func(int, T0) chan T2"},
+ {pkgpath: "aliases", name: "C0", gccgoVersion: 7, want: "type C0 struct{f1 C1; f2 C1}"},
{pkgpath: "escapeinfo", name: "NewT", want: "func NewT(data []byte) *T"},
- {pkgpath: "issue27856", name: "M", want: "type M struct{E F}"},
+ {pkgpath: "issue27856", name: "M", gccgoVersion: 7, want: "type M struct{E F}"},
{pkgpath: "v1reflect", name: "Type", want: "type Type interface{Align() int; AssignableTo(u Type) bool; Bits() int; ChanDir() ChanDir; Elem() Type; Field(i int) StructField; FieldAlign() int; FieldByIndex(index []int) StructField; FieldByName(name string) (StructField, bool); FieldByNameFunc(match func(string) bool) (StructField, bool); Implements(u Type) bool; In(i int) Type; IsVariadic() bool; Key() Type; Kind() Kind; Len() int; Method(int) Method; MethodByName(string) (Method, bool); Name() string; NumField() int; NumIn() int; NumMethod() int; NumOut() int; Out(i int) Type; PkgPath() string; Size() uintptr; String() string; common() *commonType; rawString() string; runtimeType() *runtimeType; uncommon() *uncommonType}"},
{pkgpath: "nointerface", name: "I", want: "type I int"},
- {pkgpath: "issue29198", name: "FooServer", want: "type FooServer struct{FooServer *FooServer; user string; ctx context.Context}"},
+ {pkgpath: "issue29198", name: "FooServer", gccgoVersion: 7, want: "type FooServer struct{FooServer *FooServer; user string; ctx context.Context}"},
{pkgpath: "issue30628", name: "Apple", want: "type Apple struct{hey sync.RWMutex; x int; RQ [517]struct{Count uintptr; NumBytes uintptr; Last uintptr}}"},
- {pkgpath: "issue31540", name: "S", want: "type S struct{b int; map[Y]Z}"},
+ {pkgpath: "issue31540", name: "S", gccgoVersion: 7, want: "type S struct{b int; map[Y]Z}"},
}
func TestGoxImporter(t *testing.T) {
@@ -164,12 +167,10 @@ func TestObjImporter(t *testing.T) {
arimp := GetImporter([]string{artmpdir}, arinitmap)
for _, test := range importerTests {
- // Support for type aliases was added in GCC 7.
- if test.pkgpath == "aliases" || test.pkgpath == "issue27856" || test.pkgpath == "issue29198" {
- if major < 7 {
- t.Logf("skipping %q: not supported before gccgo version 7", test.pkgpath)
- continue
- }
+ if major < test.gccgoVersion {
+ // Support for type aliases was added in GCC 7.
+ t.Logf("skipping %q: not supported before gccgo version %d", test.pkgpath, test.gccgoVersion)
+ continue
}
gofile := filepath.Join("testdata", test.pkgpath+".go")