]> Cypherpunks repositories - gostls13.git/commit
cmd/compile/internal/types2: implement singleType and structure (type)
authorRobert Griesemer <gri@golang.org>
Wed, 27 Oct 2021 00:07:32 +0000 (17:07 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 27 Oct 2021 20:25:06 +0000 (20:25 +0000)
commitbbc059572d599a414653e4ac659b4738d434e1f1
tree1209e017873e3baa1aca85baadf17ee0b25fba2c
parent6a7eb56cd1837b961ea815105235a3fd96fda94b
cmd/compile/internal/types2: implement singleType and structure (type)

Rename structuralType to singleType throughout. This reflects
more closely what the function does: if a type set consists of
exactly one type term, singleType returns the corresponding type.

Rename singleUnder to structure. The structure function returns
the "type structure" of a type, either its underlying type for
a non-type parameter, or the single underlying type (if it exists)
for a type parameter.

Change constraint type inference to use the structure type for
inference, unless the structure type is the underlying type of
a single defined type, in which case it uses the latter. This
preserves existing behavior while making constraint type inference
slightly more flexible.

Change-Id: I38ee89ffdabd12bfeaa0be2ad6af8fb373c11fc9
Reviewed-on: https://go-review.googlesource.com/c/go/+/359015
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/types2/builtins.go
src/cmd/compile/internal/types2/call.go
src/cmd/compile/internal/types2/expr.go
src/cmd/compile/internal/types2/index.go
src/cmd/compile/internal/types2/infer.go
src/cmd/compile/internal/types2/stmt.go
src/cmd/compile/internal/types2/termlist.go
src/cmd/compile/internal/types2/termlist_test.go
src/cmd/compile/internal/types2/testdata/examples/inference.go2
src/cmd/compile/internal/types2/typeparam.go
src/cmd/compile/internal/types2/typeset.go