1
0
mirror of https://github.com/golang/go synced 2024-11-26 18:06:55 -07:00

go/types, types2: move emode computation closer to use (cleanup)

Follow-up on https://go.dev/cl/519435.

Change-Id: I8febf5544f28acb87607331ff8be8454470328ea
Reviewed-on: https://go-review.googlesource.com/c/go/+/519436
Reviewed-by: Robert Griesemer <gri@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
This commit is contained in:
Robert Griesemer 2023-08-14 14:15:23 -07:00 committed by Gopher Robot
parent 197522d3ae
commit e95ca9154a
2 changed files with 14 additions and 14 deletions

View File

@ -425,13 +425,6 @@ func (u *unifier) nify(x, y Type, mode unifyMode, p *ifacePair) (result bool) {
// x != y if we get here
assert(x != y)
// Type elements (array, slice, etc. elements) use emode for unification.
// Element types must match exactly if the types are used in an assignment.
emode := mode
if mode&assign != 0 {
emode |= exact
}
// If we don't require exact unification and both types are interfaces,
// one interface must have a subset of the methods of the other and
// corresponding method signatures must unify.
@ -547,6 +540,13 @@ func (u *unifier) nify(x, y Type, mode unifyMode, p *ifacePair) (result bool) {
x, y = y, x
}
// Type elements (array, slice, etc. elements) use emode for unification.
// Element types must match exactly if the types are used in an assignment.
emode := mode
if mode&assign != 0 {
emode |= exact
}
switch x := x.(type) {
case *Basic:
// Basic types are singletons except for the rune and byte

View File

@ -427,13 +427,6 @@ func (u *unifier) nify(x, y Type, mode unifyMode, p *ifacePair) (result bool) {
// x != y if we get here
assert(x != y)
// Type elements (array, slice, etc. elements) use emode for unification.
// Element types must match exactly if the types are used in an assignment.
emode := mode
if mode&assign != 0 {
emode |= exact
}
// If we don't require exact unification and both types are interfaces,
// one interface must have a subset of the methods of the other and
// corresponding method signatures must unify.
@ -549,6 +542,13 @@ func (u *unifier) nify(x, y Type, mode unifyMode, p *ifacePair) (result bool) {
x, y = y, x
}
// Type elements (array, slice, etc. elements) use emode for unification.
// Element types must match exactly if the types are used in an assignment.
emode := mode
if mode&assign != 0 {
emode |= exact
}
switch x := x.(type) {
case *Basic:
// Basic types are singletons except for the rune and byte