| // 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{}) | |
| } |