blob: 492890e49e9734a9f324deb9b172a560254bb8a0 [file] [log] [blame]
// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package comparisons
type (
B int // basic type representative
A [10]func()
L []byte
S struct{ f []byte }
P *S
F func()
I interface{}
M map[string]int
C chan int
)
var (
b B
a A
l L
s S
p P
f F
i I
m M
c C
)
func _() {
_ = nil == nil // ERROR "operator == not defined on untyped nil"
_ = b == b
_ = a /* ERROR "[10]func() cannot be compared" */ == a
_ = l /* ERROR "slice can only be compared to nil" */ == l
_ = s /* ERROR "struct containing []byte cannot be compared" */ == s
_ = p == p
_ = f /* ERROR "func can only be compared to nil" */ == f
_ = i == i
_ = m /* ERROR "map can only be compared to nil" */ == m
_ = c == c
_ = b == nil /* ERROR "mismatched types" */
_ = a == nil /* ERROR "mismatched types" */
_ = l == nil
_ = s == nil /* ERROR "mismatched types" */
_ = p == nil
_ = f == nil
_ = i == nil
_ = m == nil
_ = c == nil
_ = nil /* ERROR "operator < not defined on untyped nil" */ < nil
_ = b < b
_ = a /* ERROR "operator < not defined on array" */ < a
_ = l /* ERROR "operator < not defined on slice" */ < l
_ = s /* ERROR "operator < not defined on struct" */ < s
_ = p /* ERROR "operator < not defined on pointer" */ < p
_ = f /* ERROR "operator < not defined on func" */ < f
_ = i /* ERROR "operator < not defined on interface" */ < i
_ = m /* ERROR "operator < not defined on map" */ < m
_ = c /* ERROR "operator < not defined on chan" */ < c
}
func _[
B int,
A [10]func(),
L []byte,
S struct{ f []byte },
P *S,
F func(),
I interface{},
J comparable,
M map[string]int,
C chan int,
](
b B,
a A,
l L,
s S,
p P,
f F,
i I,
j J,
m M,
c C,
) {
_ = b == b
_ = a /* ERROR "incomparable types in type set" */ == a
_ = l /* ERROR "incomparable types in type set" */ == l
_ = s /* ERROR "incomparable types in type set" */ == s
_ = p == p
_ = f /* ERROR "incomparable types in type set" */ == f
_ = i /* ERROR "incomparable types in type set" */ == i
_ = j == j
_ = m /* ERROR "incomparable types in type set" */ == m
_ = c == c
_ = b == nil /* ERROR "mismatched types" */
_ = a == nil /* ERROR "mismatched types" */
_ = l == nil
_ = s == nil /* ERROR "mismatched types" */
_ = p == nil
_ = f == nil
_ = i == nil /* ERROR "mismatched types" */
_ = j == nil /* ERROR "mismatched types" */
_ = m == nil
_ = c == nil
_ = b < b
_ = a /* ERROR "type parameter A is not comparable with <" */ < a
_ = l /* ERROR "type parameter L is not comparable with <" */ < l
_ = s /* ERROR "type parameter S is not comparable with <" */ < s
_ = p /* ERROR "type parameter P is not comparable with <" */ < p
_ = f /* ERROR "type parameter F is not comparable with <" */ < f
_ = i /* ERROR "type parameter I is not comparable with <" */ < i
_ = j /* ERROR "type parameter J is not comparable with <" */ < j
_ = m /* ERROR "type parameter M is not comparable with <" */ < m
_ = c /* ERROR "type parameter C is not comparable with <" */ < c
}