x is assignable to a variable
x's type V and T have identical
-underlying types and at least one of V
-or T is not a defined type.
+underlying types and at least one of V
+or T is not a named type.
T is an interface type and
+x's type V and T are channel types with
+identical element types, V is a bidirectional channel,
+and at least one of V or T is not a named type.
+T is an interface type, but not a type parameter, and
x implements T.
x is a bidirectional channel value, T is a channel type,
-x's type V and T have identical element types,
-and at least one of V or T is not a defined type.
-x is the predeclared identifier nil and T
-is a pointer, function, slice, map, channel, or interface type.
+is a pointer, function, slice, map, channel, or interface type,
+but not a type parameter.
x is an untyped constant
@@ -1871,6 +1872,29 @@ by a value of type T.
+Additionally, if x's type V or T are type parameters
+with specific types, x
+is assignable to a variable of type T if one of the following conditions applies:
+
x is the predeclared identifier nil, T is
+a type parameter, and x is assignable to each specific type of
+T.
+V is not a named type, T is
+a type parameter, and x is assignable to each specific type of
+T.
+V is a type parameter and T is not a named type,
+and values of each specific type of V are assignable
+to T.
+