go/types, types2: use nil to represent incomplete explicit aliases Using Invalid to represent an incomplete alias is problematic since it implies that an error has been reported somewhere. This causes confusion for observers of invalid aliases trying not to emit follow-on errors. This change uses nil instead to represent an incomplete alias. This has a mild benefit of making alias memoization more convenient. We additionally can now memoize Invalid aliases. This necessitates a minor change to our cycle error reporting for aliases. Care is taken to separate logic according to gotypesalias. Otherwise, a cycle as simple as "type T = T" panics. A test is also added which uses go/types to inspect for Invalid types. Currently, the problematic Invalid does not cause an error in type checking, but rather a panic in noding. Thus, we cannot use the familiar test facilities relying on error reporting. Fixes #74181 Change-Id: Iea5ebce567a2805f5647de0fb7ded4a96f6c5f8d Reviewed-on: https://go-review.googlesource.com/c/go/+/683796 Reviewed-by: Robert Griesemer <gri@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 4.0 Attribution license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.