diff options
author | Robert Griesemer <gri@golang.org> | 2021-07-15 16:42:25 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2021-07-16 04:41:47 +0000 |
commit | 3d8453e00e3d0a6f23cec06bcad08cf740ec5940 (patch) | |
tree | 5ae4ea8833b913919931fcc3d83bda1ee99aa2a2 /src/cmd/compile/internal/types2/decl.go | |
parent | 334f2fc045b7d9d846cccba01b3a0dbf70ddb0db (diff) | |
download | go-3d8453e00e3d0a6f23cec06bcad08cf740ec5940.tar.gz go-3d8453e00e3d0a6f23cec06bcad08cf740ec5940.zip |
[dev.typeparams] cmd/compile/internal/types2: more consistent handling of predeclared "any"
Rather than removing "any" from the universe scope, keep it predeclared
but provide a better error message.
While at it, remove some unnecessary type assertions.
Change-Id: I10603274282ea6afc107f703ab194f32bd334dd1
Reviewed-on: https://go-review.googlesource.com/c/go/+/334911
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/decl.go')
-rw-r--r-- | src/cmd/compile/internal/types2/decl.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/types2/decl.go b/src/cmd/compile/internal/types2/decl.go index 9fb9815f4d..4f656e374a 100644 --- a/src/cmd/compile/internal/types2/decl.go +++ b/src/cmd/compile/internal/types2/decl.go @@ -617,8 +617,9 @@ func (check *Checker) declareTypeParam(index int, name *syntax.Name) *TypeName { // The type must be an interface, including the predeclared type "any". func (check *Checker) boundType(e syntax.Expr) Type { // The predeclared identifier "any" is visible only as a type bound in a type parameter list. - if name, _ := unparen(e).(*syntax.Name); name != nil && name.Value == "any" && check.lookup("any") == nil { - return universeAny + // If we allow "any" for general use, this if-statement can be removed (issue #33232). + if name, _ := unparen(e).(*syntax.Name); name != nil && name.Value == "any" && check.lookup("any") == universeAny { + return universeAny.Type() } bound := check.typ(e) |