// Copyright 2021 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.
// This file contains tests for the reflectvaluecompare checker.
package a
import (
"reflect"
)
func f() {
var x, y reflect.Value
var a, b interface{}
_ = x == y // want `avoid using == with reflect.Value`
_ = x == a // want `avoid using == with reflect.Value`
_ = a == x // want `avoid using == with reflect.Value`
_ = a == b
// Comparing to reflect.Value{} is ok.
_ = a == reflect.Value{}
_ = reflect.Value{} == a
_ = reflect.Value{} == reflect.Value{}
}
func g() {
var x, y reflect.Value
var a, b interface{}
_ = x != y // want `avoid using != with reflect.Value`
_ = x != a // want `avoid using != with reflect.Value`
_ = a != x // want `avoid using != with reflect.Value`
_ = a != b
// Comparing to reflect.Value{} is ok.
_ = a != reflect.Value{}
_ = reflect.Value{} != a
_ = reflect.Value{} != reflect.Value{}
}
func h() {
var x, y reflect.Value
var a, b interface{}
reflect.DeepEqual(x, y) // want `avoid using reflect.DeepEqual with reflect.Value`
reflect.DeepEqual(x, a) // want `avoid using reflect.DeepEqual with reflect.Value`
reflect.DeepEqual(a, x) // want `avoid using reflect.DeepEqual with reflect.Value`
reflect.DeepEqual(a, b)
// Comparing to reflect.Value{} is ok.
reflect.DeepEqual(reflect.Value{}, a)
reflect.DeepEqual(a, reflect.Value{})
reflect.DeepEqual(reflect.Value{}, reflect.Value{})
}