52078fa477
It turns out there is no real TODO here - things are working fine. If we are generating a wrapper for a method on a generic type that is actually the method on embedded type, then we should just just generate the normal embedded wrapper, which calls the wrapper for the real receiver type on that method. There is no need to do the generic path where we add in the dictionary argument. So, just updated that TODO comment with this explanation. Added a new test case embedded.go, which specifically tests various situations involving converting to empty and non-empty interfaces. issue44688.go already tests a bunch of these situations as well. Also made some other cleanups in reflect.go: - The shape test (that I had added) at the top of imethods is useless (never true), since it is always an interface type, so removed it. - Added usual helper function deref() to make code clearer in several places. - The shape test in methodWrapper() doesn't have to check HasShape() on each targ - it can just check HasShape() on the whole receiver. - The comment about disabling the tail call optimization for RegABI is no longer true. - Simplified code in several places by using the value of existing variable 'methodrcvr'. Change-Id: I8b1a5dc518dad37585824a1f73ceebb7627a9f82 Reviewed-on: https://go-review.googlesource.com/c/go/+/355129 Trust: Dan Scales <danscales@google.com> Reviewed-by: Keith Randall <khr@golang.org> |
||
---|---|---|
.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.