]> Cypherpunks repositories - gostls13.git/commitdiff
doc: add release note for go/types.Alias type and Unalias function
authorRobert Griesemer <gri@golang.org>
Mon, 4 Dec 2023 21:24:13 +0000 (13:24 -0800)
committerGopher Robot <gobot@golang.org>
Tue, 5 Dec 2023 22:46:25 +0000 (22:46 +0000)
Also, add some missing <code></code> tags.

For #63223.

Change-Id: I570b82be830b3c124420c5715ab1165ca53725f9
Reviewed-on: https://go-review.googlesource.com/c/go/+/546358
Auto-Submit: Robert Griesemer <gri@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
TryBot-Bypass: Robert Griesemer <gri@google.com>

doc/go1.22.html

index 7642ff5bfd78ed8b30c38503c978a2099d02aca4..9a84d3dd740b7dbd0811b65de3dde662cc5125a4 100644 (file)
@@ -513,8 +513,22 @@ Do not send CLs removing the interior tags from such phrases.
       for the given import declaration.
     </p>
 
-    <p><!-- https://go.dev/issue/63223 -->
-      TODO: <a href="https://go.dev/issue/63223">https://go.dev/issue/63223</a>: API changes to support explicit Alias nodes
+    <p><!-- https://go.dev/issue/63223, CL 521956, CL 541737 -->
+      The new <a href="/pkg/go/types#Alias"><code>Alias</code></a> type represents type aliases.
+      Previously, type aliases were not represented explicitly, so a reference to a type alias was equivalent
+      to spelling out the aliased type, and the name of the alias was lost.
+      The new representation retains the intermediate Alias.
+      This enables improved error reporting (the name of an alias can be reported), and allows for better handling
+      of cyclic type declarations involving type aliases.
+      In a future release, <code>Alias</code> types will also carry <a href="https://go.dev/issue/46477">type parameter information</a>.
+      The new function <a href="/pkg/go/types#Unalias"><code>Unalias</code></a> returns the actual type denoted by an
+      <code>Alias</code> type (or any other <a href="/pkg/go/types#Type"><code>Type</code></a> for that matter).
+      Because <code>Alias</code> types may break existing type switches that do not know to check for them,
+      this functionality is controlled by a <a href="/doc/godebug"><code>GODEBUG</code></a> field named <code>gotypesalias</code>.
+      With <code>gotypesalias=0</code>, everything behaves as before, and <code>Alias</code> types are never created.
+      With <code>gotypesalias=1</code>, <code>Alias</code> types are created and clients must expect them.
+      The default is <code>gotypesalias=0</code>.
+      In a future release, the default will be changed to <code>gotypesalias=1</code>.
     </p>
 
     <p><!-- https://go.dev/issue/61035, multiple CLs, see issue for details -->
@@ -524,13 +538,9 @@ Do not send CLs removing the interior tags from such phrases.
       <code>types.SizesFor("gc", "amd64")</code>.
     </p>
 
-    <p><!-- CL 541737 -->
-      TODO: <a href="https://go.dev/cl/541737">https://go.dev/cl/541737</a>: go/types, types2: implement Alias proposal (export API); modified api/next/63223.txt
-    </p>
-
     <p><!-- https://go.dev/issue/64295, CL 544035 -->
-      The start position (<a href="/pkg/go/types#Scope.Pos">Pos</a>)
-      of the lexical environment block (<a href="/pkg/go/types#Scope">Scope</a>)
+      The start position (<a href="/pkg/go/types#Scope.Pos"><code>Pos</code></a>)
+      of the lexical environment block (<a href="/pkg/go/types#Scope"><code>Scope</code></a>)
       that represents a function body has changed:
       it used to start at the opening curly brace of the function body,
       but now starts at the function's <code>func</code> token.