6b4cf2be93
Change to using types.(*Type).LinkString() for printing names of types in function/method instantiations. (e.g. f[int] or Value[p.Myint].Set()) LinkString already generates a unique string description for t, using package paths, except that it uses "" for the local package path. The "" will be expanded in the linker, so the names in the executable will have full package paths everywhere and de-duplication of function/method instantiations will work properly. We do need to add an explicit substitution of "" in ReadImports() for function/method names. We previously were using NameString(), which doesn't use full package paths, so is not fully unique. We had also discussed that we would prefer to minimize spaces in function/method instantiation names. So, I changed LinkString() to eliminate all unneeded spaces. In the one case where we need a separator, which is between field names and types, we use a "#" instead of a space. This change has the advantage of eliminating spaces in some existing non-generic function name - mainly .type.eq functions for anonymous types (e.g. "type..eq.struct { runtime.gList; runtime.n int32 }") shows up in a hello-world executable (as Cherry pointed out). We do not need an analogous function for types2 right now, since we create all instantiations using types1 types. In the one case where we need to create an instantiation during types2-to-types1 translation, we convert the types to types1 first (see (*irgen).instTypeName2). Change-Id: Iac4748fa0d0d6f89af59bd51076266986daee945 Reviewed-on: https://go-review.googlesource.com/c/go/+/353609 Trust: Dan Scales <danscales@google.com> Run-TryBot: Dan Scales <danscales@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> |
||
---|---|---|
.github | ||
api | ||
doc | ||
lib/time | ||
misc | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
codereview.cfg | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
LICENSE | ||
PATENTS | ||
README.md | ||
SECURITY.md |
The Go Programming Language
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 3.0 Attributions 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.
Download and Install
Binary Distributions
Official binary distributions are available at https://golang.org/dl/.
After downloading a binary release, visit https://golang.org/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://golang.org/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://golang.org/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://golang.org/wiki/Questions for a list of places to ask questions about the Go language.