mirror of
https://github.com/golang/go
synced 2024-09-18 15:32:18 +00:00
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:
parent
fa88ba1e8a
commit
cd5f2cf50f
|
@ -451,6 +451,93 @@ Do not send CLs removing the interior tags from such phrases.
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</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>
|
<dl id="image/draw"><dt><a href="/pkg/image/draw/">image/draw</a></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p><!-- CL 340049 -->
|
<p><!-- CL 340049 -->
|
||||||
|
|
Loading…
Reference in a new issue