doc/go1.18: add documentation for changes to go/types

The number of involved CLs is too large (hundreds) so
no CLs are mentioned in (html) comments.

Updates #47694

Change-Id: I655d800a1e56a71e9d70a190f1c42c17baf6861e
Reviewed-on: https://go-review.googlesource.com/c/go/+/369099
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
Robert Griesemer 2021-12-03 12:20:33 -08:00
parent fa88ba1e8a
commit cd5f2cf50f

View file

@ -451,6 +451,93 @@ Do not send CLs removing the interior tags from such phrases.
</dd>
</dl>
<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
<dd>
<p><!-- https://golang.org/issue/47916 -->
Per the proposal
<a href="https://go.googlesource.com/proposal/+/master/design/47916-parameterized-go-types.md">
Additions to go/types to support type parameters
</a>
the following additions are made to the <a href="/pkg/go/types"><code>go/types</code></a> package:
</p>
<ul>
<li>
The new type
<a href="/pkg/go/types/#TypeParam"><code>TypeParam</code></a>, factory function
<a href="/pkg/go/types/#NewTypeParam"><code>NewTypeParam</code></a>,
and associated methods were added to represent a type parameter.
</li>
<li>
The new type
<a href="/pkg/go/types/#TypeParamList"><code>TypeParamList</code></a> holds a list of
type parameters.
</li>
<li>
The new type
<a href="/pkg/go/types/#TypeList"><code>TypeList</code></a> and factory function
<a href="/pkg/go/types/#NewTypeList"><code>NewTypeList</code></a> facilitate storing
a list of types.
</li>
<li>
The new factory function
<a href="/pkg/go/types/#NewSignatureType"><code>NewSignatureType</code></a> allocates a
<a href="/pkg/go/types/#Signature"><code>Signature</code></a> with
(receiver or function) type parameters.
To access those type parameters, the <code>Signature</code> type has two new methods
<a href="/pkg/go/types/#Signature.RecvTypeParams"><code>Signature.RecvTypeParams</code></a> and
<a href="/pkg/go/types/#Signature.TypeParams"><code>Signature.TypeParams</code></a>.
</li>
<li>
<a href="/pkg/go/types/#Named"><code>Named</code></a> types have four new methods:
<a href="/pkg/go/types/#Named.Origin"><code>Named.Origin</code></a> to get the original
parameterized types of instantiated types,
<a href="/pkg/go/types/#Named.TypeArgs"><code>Named.TypeArgs</code></a> and
<a href="/pkg/go/types/#Named.TypeParams"><code>Named.TypeParams</code></a> to get the
type arguments or type parameters of an instantiated or parameterized type, and
<a href="/pkg/go/types/#Named.TypeParams"><code>Named.SetTypeParams</code></a> to set the
type parameters (for instance, when importing a named type where allocation of the named
type and setting of type parameters cannot be done both at once due to possible cycles).
</li>
<li>
The <a href="/pkg/go/types/#Interface"><code>Interface</code></a> type has four new methods:
<a href="/pkg/go/types/#Interface.IsComparable"><code>Interface.IsComparable</code></a> and
<a href="/pkg/go/types/#Interface.IsMethodSet"><code>Interface.IsMethodSet</code></a> to
query properties of the type set defined by the interface, and
<a href="/pkg/go/types/#Interface.MarkImplicit"><code>Interface.MarkImplicit</code></a> and
<a href="/pkg/go/types/#Interface.IsImplicit"><code>Interface.IsImplicit</code></a> to set
and test whether the interface is an implicit interface around a type constraint literal.
</li>
<li>
The new types
<a href="/pkg/go/types/#Union"><code>Union</code></a> and
<a href="/pkg/go/types/#Term"><code>Term</code></a>, factory functions
<a href="/pkg/go/types/#NewUnion"><code>NewUnion</code></a> and
<a href="/pkg/go/types/#NewTerm"><code>NewTerm</code></a>, and associated
methods were added to represent type sets in interfaces.
</li>
<li>
The new function
<a href="/pkg/go/types/#Instantiate"><code>Instantiate</code></a>
instantiates a parameterized type.
</li>
<li>
The new <a href="/pkg/go/types/#Info.Instances"><code>Info.Instances</code></a>
map records function and type instantiations through the new
<a href="/pkg/go/types/#Instance"><code>Instance</code></a> type.
</li>
<li><!-- CL 342671 -->
The new type <a href="/pkg/go/types/#ArgumentError"><code>ArgumentError</code></a>
and associated methods were added to represent an error related to a type argument.
</li>
<li><!-- CL 353089 -->
The new type <a href="/pkg/go/types/#Context"><code>Context</code></a> and factory function
<a href="/pkg/go/types/#NewContext"><code>NewContext</code></a>
were added to facilitate sharing of identical type instances across type-checked packages.
</li>
</ul>
</dd>
</dl>
<dl id="image/draw"><dt><a href="/pkg/image/draw/">image/draw</a></dt>
<dd>
<p><!-- CL 340049 -->