diff options
author | thepudds <thepudds@users.noreply.github.com> | 2022-03-08 14:51:27 +0000 |
---|---|---|
committer | Robert Findley <rfindley@google.com> | 2022-03-08 16:50:57 +0000 |
commit | d3070a767bc0ddfdca1f84e2018de1c906b817ca (patch) | |
tree | d916eca8c3f97650f52f207644bc9f332ccd037b /test | |
parent | 291bda80e551289e0b8ed3209782ccb2a98a124b (diff) | |
download | go-d3070a767bc0ddfdca1f84e2018de1c906b817ca.tar.gz go-d3070a767bc0ddfdca1f84e2018de1c906b817ca.zip |
cmd/compile/internal/types2: more consistently print "check go.mod" if language version < 1.18
If you attempt to instantiate a generic type or func and run 'go build'
with a language version < 1.18 in the 'go' directive inside the go.mod
file, cmd/compile emits a friendly message that includes the suggestion
to 'check go.mod':
type instantiation requires go1.18 or later (-lang was set to go1.17; check go.mod)
However, if the code instead only declares a generic type or func
without instantiating, cmd/compile currently emits a less friendly
message:
type parameters require go1.18 or later
With this CL, the error in that situation becomes:
type parameter requires go1.18 or later (-lang was set to go1.17; check go.mod)
Within cmd/compile/internal/types2, it already calls check.versionErrorf
in a dozen or so places, including three existing calls to
check.versionErrorf within typeset.go (e.g., for embedding a constraint
interface).
This CL adds two more calls to check.versionErrorf, replacing calls to
check.softErrorf. Both check.versionErrorf and check.softErrorf call
check.err(at, <string>, true) after massaging the string message.
Fixes #51531
Change-Id: If54e179f5952b97701d1dfde4abb08101de07811
GitHub-Last-Rev: b0b7c1346f3a92f70e6cd5ff9ef047f441b09895
GitHub-Pull-Request: golang/go#51536
Reviewed-on: https://go-review.googlesource.com/c/go/+/390578
Reviewed-by: Robert Griesemer <gri@golang.org>
Trust: Robert Findley <rfindley@google.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/fixedbugs/issue51531.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/test/fixedbugs/issue51531.go b/test/fixedbugs/issue51531.go new file mode 100644 index 0000000000..a296bbc776 --- /dev/null +++ b/test/fixedbugs/issue51531.go @@ -0,0 +1,13 @@ +// errorcheck -lang=go1.17 + +// Copyright 2021 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. + +package p + +type empty interface{} + +type Foo[T empty] int // ERROR "type parameter requires go1\.18 or later \(-lang was set to go1\.17; check go.mod\)" + +func Bar[T empty]() {} // ERROR "type parameter requires go1\.18 or later \(-lang was set to go1\.17; check go.mod\)" |