diff options
author | Robert Griesemer <gri@golang.org> | 2014-06-24 16:25:09 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2014-06-24 16:25:09 -0700 |
commit | d9c22424e70b00636207bc73b25b6cf026fe9347 (patch) | |
tree | 926148d21d51da18ba2c51255016639d2d3b1f95 /CONTRIBUTORS | |
parent | 19e59793923da15d754c7b2754d796e74839e338 (diff) | |
download | go-d9c22424e70b00636207bc73b25b6cf026fe9347.tar.gz |
spec: receiver declaration is just a parameter declaration
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 issue 4496.
LGTM=iant, rsc
R=r, rsc, iant, ken
CC=golang-codereviews
https://codereview.appspot.com/101500044
Diffstat (limited to 'CONTRIBUTORS')
0 files changed, 0 insertions, 0 deletions