From 3404ee3e86b9f4eab55d2451dcd9db5b4cd9ed4a Mon Sep 17 00:00:00 2001 From: Robert Findley Date: Wed, 17 Nov 2021 19:29:13 -0500 Subject: [PATCH] go/types: move match function to end of file (cleanup) This is a port of CL 363669 from types2 to go/types. Change-Id: Id1f375ff5708dab528144e30ce16d24d6fdf7d00 Reviewed-on: https://go-review.googlesource.com/c/go/+/364900 Trust: Robert Findley Run-TryBot: Robert Findley TryBot-Result: Go Bot Reviewed-by: Robert Griesemer --- src/go/types/type.go | 58 ++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/go/types/type.go b/src/go/types/type.go index 099449c8b9c..3acb19c4124 100644 --- a/src/go/types/type.go +++ b/src/go/types/type.go @@ -27,35 +27,6 @@ func under(t Type) Type { return t.Underlying() } -// If x and y are identical, match returns x. -// If x and y are identical channels but for their direction -// and one of them is unrestricted, match returns the channel -// with the restricted direction. -// In all other cases, match returns nil. -func match(x, y Type) Type { - // Common case: we don't have channels. - if Identical(x, y) { - return x - } - - // We may have channels that differ in direction only. - if x, _ := x.(*Chan); x != nil { - if y, _ := y.(*Chan); y != nil && Identical(x.elem, y.elem) { - // We have channels that differ in direction only. - // If there's an unrestricted channel, select the restricted one. - switch { - case x.dir == SendRecv: - return y - case y.dir == SendRecv: - return x - } - } - } - - // types are different - return nil -} - // If t is not a type parameter, structuralType returns the underlying type. // If t is a type parameter, structuralType returns the single underlying // type of all types in its type set if it exists, or nil otherwise. If the @@ -124,3 +95,32 @@ func structuralString(t Type) Type { } return nil } + +// If x and y are identical, match returns x. +// If x and y are identical channels but for their direction +// and one of them is unrestricted, match returns the channel +// with the restricted direction. +// In all other cases, match returns nil. +func match(x, y Type) Type { + // Common case: we don't have channels. + if Identical(x, y) { + return x + } + + // We may have channels that differ in direction only. + if x, _ := x.(*Chan); x != nil { + if y, _ := y.(*Chan); y != nil && Identical(x.elem, y.elem) { + // We have channels that differ in direction only. + // If there's an unrestricted channel, select the restricted one. + switch { + case x.dir == SendRecv: + return y + case y.dir == SendRecv: + return x + } + } + } + + // types are different + return nil +}