Commit 1c369bd5 authored by Robert Griesemer's avatar Robert Griesemer

Clarify parsing of channel types.

R=r, rsc
CC=golang-dev
https://golang.org/cl/194091
parent 2a01d728
......@@ -1107,6 +1107,19 @@ SendChannel = "chan" "<-" ElementType .
RecvChannel = "<-" "chan" ElementType .
</pre>
<p>
To avoid a parsing ambiguity in cases such as <code>chan&lt;- chan int</code>,
the Channel production's ElementType cannot be a RecvChannel.
To construct such a type, parenthesize the RecvChannel first.
</p>
<pre>
chan&lt;- chan int // same as chan&lt;- (chan int)
chan&lt;- &lt;-chan int // same as chan&lt;- (&lt;-chan int)
&lt;-chan &lt;-chan int // same as &lt;-chan (&lt;-chan int)
chan (&lt;-chan int)
</pre>
<p>
Upon creation, a channel can be used both to send and to receive values.
By conversion or assignment, a channel may be constrained only to send or
......@@ -1126,7 +1139,6 @@ value can be made using the built-in function <code>make</code>,
which takes the channel type and an optional capacity as arguments:
</p>
<pre>
make(chan int, 100)
</pre>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment