mirror of
https://github.com/golang/go
synced 2024-11-24 08:50:14 -07:00
187ee2cf2b
This CL removes the special syntax for method receivers and makes it just like other parameters. Instead, the crucial receiver-specific rules (exactly one receiver, receiver type must be of the form T or *T) are specified verbally instead of syntactically. This is a fully backward-compatible (and minor) syntax relaxation. As a result, the following syntactic restrictions (which are completely irrelevant) and which were only in place for receivers are removed: a) receiver types cannot be parenthesized b) receiver parameter lists cannot have a trailing comma The result of this CL is a simplication of the spec and the implementation, with no impact on existing (or future) code. Noteworthy: - gc already permits a trailing comma at the end of a receiver declaration: func (recv T,) m() {} This is technically a bug with the current spec; this CL will legalize this notation. - gccgo produces a misleading error when a trailing comma is used: error: method has multiple receivers (even though there's only one receiver) - Compilers and type-checkers won't need to report errors anymore if receiver types are parenthesized. Fixes #4496. LGTM=iant, rsc R=r, rsc, iant, ken CC=golang-codereviews https://golang.org/cl/101500044 |
||
---|---|---|
.. | ||
articles | ||
codewalk | ||
devel | ||
gopher | ||
play | ||
progs | ||
asm.html | ||
cmd.html | ||
code.html | ||
contrib.html | ||
contribute.html | ||
debugging_with_gdb.html | ||
docs.html | ||
effective_go.html | ||
gccgo_contribute.html | ||
gccgo_install.html | ||
go1.1.html | ||
go1.2.html | ||
go1.3.html | ||
go1.4.txt | ||
go1.html | ||
go1compat.html | ||
go_faq.html | ||
go_mem.html | ||
go_spec.html | ||
go-logo-black.png | ||
go-logo-blue.png | ||
go-logo-white.png | ||
help.html | ||
ie.css | ||
install-source.html | ||
install.html | ||
logo-153x55.png | ||
root.html | ||
share.png | ||
sieve.gif | ||
tos.html |