]> Cypherpunks repositories - gostls13.git/commitdiff
fix for conversion rule
authorRobert Griesemer <gri@golang.org>
Fri, 19 Jun 2009 20:03:01 +0000 (13:03 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 19 Jun 2009 20:03:01 +0000 (13:03 -0700)
R=rsc
DELTA=25  (10 added, 7 deleted, 8 changed)
OCL=30516
CL=30531

doc/go_spec.html

index 9ffcb41a77489add30e469cda80e908a94a20e5c..37faf1c905c1248fce81696b219f7e5e17be355f 100644 (file)
@@ -997,7 +997,7 @@ A channel provides a mechanism for two concurrently executing functions
 to synchronize execution and communicate by passing a value of a
 specified element type. The element type must be complete (§Types).
 (TODO: is completeness necessary here?)
-A channel value may be <code>nil</code>.
+A value of channel type may be <code>nil</code>.
 </p>
 
 <pre class="grammar">
@@ -1161,19 +1161,22 @@ be assigned to otherwise incompatible types:
 </p>
 <ul>
 <li>
+A value can be assigned to an interface variable if the static
+type of the value implements the interface.
+</li>
+<li>
 The predeclared constant <code>nil</code> can be assigned to any
 pointer, function, slice, map, channel, or interface variable.
 <li>
-A pointer to an array can be assigned to a slice variable with compatible element type.
+A pointer <code>p</code> to an array can be assigned to a slice variable
+<code>v</code> with compatible element type
+if the type of <code>p</code> or <code>v</code> is unnamed.
 The slice variable then refers to the original array; the data is not copied.
 </li>
 <li>
-A value can be assigned to an interface variable if the static
-type of the value implements the interface.
-</li>
-<li>
-A value of bidirectional channel type can be assigned to any channel
-variable of compatible channel value type.
+A bidirectional channel <code>c</code> can be assigned to a channel variable
+<code>v</code> with compatible channel value type
+if the type of <code>c</code> or <code>v</code> is unnamed.
 </li>
 </ul>
 
@@ -3846,13 +3849,13 @@ The following conversion rules apply:
 </p>
 <ul>
 <li>
-1) Between two compatible types (§Type identity and compatibility).
-The conversion always succeeds.
+1) The conversion succeeds if the value is assignment-compatible
+to a variable of type T.
 </li>
 <li>
-2) Between two types that would be compatible if they
-or any of their component types were unnamed (§Type identity and compatibility).
-The conversion always succeeds.
+2) The conversion succeeds if the value would be assignment-compatible
+to a variable of type T if the value type or T or any of their component
+types are unnamed (§Type identity and compatibility).
 </li>
 <li>
 3) Between integer types.  If the value is a signed quantity, it is