aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/predicates.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2022-06-23 20:54:52 -0700
committerRobert Griesemer <gri@golang.org>2022-06-24 17:45:41 +0000
commit3e58ef6cc7dfaf2cf3b593e728f7f62391030114 (patch)
treeb3678c9df172e421d288fd1f7305ee5ea4715f41 /src/cmd/compile/internal/types2/predicates.go
parentd38f1d13fa413436d38d86fe86d6a146be44bb84 (diff)
downloadgo-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.go12
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
}