diff options
author | Robert Griesemer <gri@golang.org> | 2022-06-23 20:54:52 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2022-06-24 17:45:41 +0000 |
commit | 3e58ef6cc7dfaf2cf3b593e728f7f62391030114 (patch) | |
tree | b3678c9df172e421d288fd1f7305ee5ea4715f41 /src/cmd/compile/internal/types2/predicates.go | |
parent | d38f1d13fa413436d38d86fe86d6a146be44bb84 (diff) | |
download | go-3e58ef6cc7dfaf2cf3b593e728f7f62391030114.tar.gz go-3e58ef6cc7dfaf2cf3b593e728f7f62391030114.zip |
go/types, types2: better errors for == when type sets are empty
For #51525.
Change-Id: I3762bc4a48a1aaab3b006b1ad1400f866892243c
Reviewed-on: https://go-review.googlesource.com/c/go/+/413934
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Robert Griesemer <gri@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/predicates.go')
-rw-r--r-- | src/cmd/compile/internal/types2/predicates.go | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/types2/predicates.go b/src/cmd/compile/internal/types2/predicates.go index f7b5b16204..c4d11dcac4 100644 --- a/src/cmd/compile/internal/types2/predicates.go +++ b/src/cmd/compile/internal/types2/predicates.go @@ -147,7 +147,17 @@ func comparable(T Type, dynamic bool, seen map[Type]bool, reportf func(string, . } return true case *Interface: - return dynamic && !isTypeParam(T) || t.typeSet().IsComparable(seen) + if dynamic && !isTypeParam(T) || t.typeSet().IsComparable(seen) { + return true + } + if reportf != nil { + if t.typeSet().IsEmpty() { + reportf("empty type set") + } else { + reportf("incomparable types in type set") + } + } + // fallthrough } return false } |