From: Robert Griesemer Date: Fri, 15 Jan 2021 22:37:35 +0000 (-0800) Subject: [dev.typeparams] cmd/compile/internal/types: minor fixes/cleanups around testing X-Git-Tag: go1.17beta1~1473^2~100 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3c0a39c964;p=gostls13.git [dev.typeparams] cmd/compile/internal/types: minor fixes/cleanups around testing Also, implemented isConstType predicate in terms of "is" predicate. Change-Id: Ib3b311f52196dba974802348bc6d63307530d915 Reviewed-on: https://go-review.googlesource.com/c/go/+/284217 Trust: Robert Griesemer Run-TryBot: Robert Griesemer TryBot-Result: Go Bot Reviewed-by: Robert Findley --- diff --git a/src/cmd/compile/internal/types2/check_test.go b/src/cmd/compile/internal/types2/check_test.go index 85bf0728c0..b03b074b6d 100644 --- a/src/cmd/compile/internal/types2/check_test.go +++ b/src/cmd/compile/internal/types2/check_test.go @@ -47,12 +47,12 @@ var ( testFiles = flag.String("files", "", "space-separated list of test files") ) -func parseFiles(t *testing.T, filenames []string) ([]*syntax.File, []error) { +func parseFiles(t *testing.T, filenames []string, mode syntax.Mode) ([]*syntax.File, []error) { var files []*syntax.File var errlist []error errh := func(err error) { errlist = append(errlist, err) } for _, filename := range filenames { - file, err := syntax.ParseFile(filename, errh, nil, syntax.AllowGenerics) + file, err := syntax.ParseFile(filename, errh, nil, mode) if file == nil { t.Fatalf("%s: %s", filename, err) } @@ -84,8 +84,16 @@ func delta(x, y uint) uint { } func checkFiles(t *testing.T, sources []string, colDelta uint, trace bool) { + if len(sources) == 0 { + t.Fatal("no source files") + } + + var mode syntax.Mode + if strings.HasSuffix(sources[0], ".go2") { + mode |= syntax.AllowGenerics + } // parse files and collect parser errors - files, errlist := parseFiles(t, sources) + files, errlist := parseFiles(t, sources, mode) pkgName := "" if len(files) > 0 { diff --git a/src/cmd/compile/internal/types2/predicates.go b/src/cmd/compile/internal/types2/predicates.go index b910d8d0ee..9cce189140 100644 --- a/src/cmd/compile/internal/types2/predicates.go +++ b/src/cmd/compile/internal/types2/predicates.go @@ -73,12 +73,8 @@ func isUntyped(typ Type) bool { return !isTyped(typ) } -func isOrdered(typ Type) bool { return is(typ, IsOrdered) } - -func isConstType(typ Type) bool { - t := typ.Basic() - return t != nil && t.info&IsConstType != 0 -} +func isOrdered(typ Type) bool { return is(typ, IsOrdered) } +func isConstType(typ Type) bool { return is(typ, IsConstType) } // IsInterface reports whether typ is an interface type. func IsInterface(typ Type) bool { diff --git a/src/cmd/compile/internal/types2/testdata/expr3.src b/src/cmd/compile/internal/types2/testdata/expr3.src index 071c9bb367..6d0ac6cd94 100644 --- a/src/cmd/compile/internal/types2/testdata/expr3.src +++ b/src/cmd/compile/internal/types2/testdata/expr3.src @@ -145,10 +145,6 @@ func indexes() { ms = "foo" /* ERROR "cannot use .* in assignment" */ [1:2] ms = "foo" /* ERROR "cannot use .* in assignment" */ [i:j] _, _ = ss, ms - - // With type parameters, index expressions may have multiple indices. - _ = a[i, j /* ERROR "more than one index" */ ] - _ = a[i, j /* ERROR "more than one index" */ , j] } type T struct {