aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/decl.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2021-04-13 17:48:45 -0700
committerRobert Griesemer <gri@golang.org>2021-04-14 19:35:43 +0000
commit892cad7a9b6632533f87bf89d98c43f21c749a80 (patch)
tree31ac7fb609fc7bab64b5c53edfac7dd6578970b9 /src/cmd/compile/internal/types2/decl.go
parent283f9fdbd340a5f3c1b27fd10730986b35e57c89 (diff)
downloadgo-892cad7a9b6632533f87bf89d98c43f21c749a80.tar.gz
go-892cad7a9b6632533f87bf89d98c43f21c749a80.zip
cmd/compile/internal/types2: add Named.SetTParams and Named.Orig methods
Named.SetTParams sets the type parameters for a named type. Named.Orig returns the original generic type an instantiated type is derived from. Added a new field orig for that purpose and renamed the already existing orig field to fromRHS. Finally, updated various comments. Change-Id: Ic9d173e42740422d195713d8bdc62a54dc8c5f54 Reviewed-on: https://go-review.googlesource.com/c/go/+/309832 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/decl.go')
-rw-r--r--src/cmd/compile/internal/types2/decl.go9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/cmd/compile/internal/types2/decl.go b/src/cmd/compile/internal/types2/decl.go
index f8559a43bb..178bebe2ec 100644
--- a/src/cmd/compile/internal/types2/decl.go
+++ b/src/cmd/compile/internal/types2/decl.go
@@ -333,7 +333,7 @@ func (check *Checker) validType(typ Type, path []Object) typeInfo {
switch t.info {
case unknown:
t.info = marked
- t.info = check.validType(t.orig, append(path, t.obj)) // only types of current package added to path
+ t.info = check.validType(t.fromRHS, append(path, t.obj)) // only types of current package added to path
case marked:
// cycle detected
for i, tn := range path {
@@ -611,9 +611,8 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *Named
} else {
// defined type declaration
- named := &Named{check: check, obj: obj}
+ named := check.newNamed(obj, nil, nil, nil, nil)
def.setUnderlying(named)
- obj.typ = named // make sure recursive type declarations terminate
if tdecl.TParamList != nil {
check.openScope(tdecl, "type parameters")
@@ -622,7 +621,7 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *Named
}
// determine underlying type of named
- named.orig = check.definedType(tdecl.Type, named)
+ named.fromRHS = check.definedType(tdecl.Type, named)
// The underlying type of named may be itself a named type that is
// incomplete:
@@ -637,7 +636,7 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *Named
// and which has as its underlying type the named type B.
// Determine the (final, unnamed) underlying type by resolving
// any forward chain.
- // TODO(gri) Investigate if we can just use named.origin here
+ // TODO(gri) Investigate if we can just use named.fromRHS here
// and rely on lazy computation of the underlying type.
named.underlying = under(named)
}