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:
parent
197522d3ae
commit
e95ca9154a
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user