github.com/amarpal/go-tools@v0.0.0-20240422043104-40142f59f616/staticcheck/sa4000/testdata/src/example.com/CheckLhsRhsIdentical/CheckLhsRhsIdentical.go (about)

     1  package pkg
     2  
     3  import "math/rand"
     4  
     5  type Float float64
     6  
     7  type Floats [5]float64
     8  type Ints [5]int
     9  
    10  type T1 struct {
    11  	A float64
    12  	B float64
    13  }
    14  
    15  type T2 struct {
    16  	A float64
    17  	B int
    18  }
    19  
    20  func fn(a int, s []int, f1 float64, f2 Float, fs Floats, is Ints, t1 T1, t2 T2) {
    21  	if 0 == 0 { //@ diag(`identical expressions`)
    22  		println()
    23  	}
    24  	if 1 == 1 { //@ diag(`identical expressions`)
    25  		println()
    26  	}
    27  	if a == a { //@ diag(`identical expressions`)
    28  		println()
    29  	}
    30  	if a != a { //@ diag(`identical expressions`)
    31  		println()
    32  	}
    33  	if s[0] == s[0] { //@ diag(`identical expressions`)
    34  		println()
    35  	}
    36  	if 1&1 == 1 { //@ diag(`identical expressions`)
    37  		println()
    38  	}
    39  	if (1 + 2 + 3) == (1 + 2 + 3) { //@ diag(`identical expressions`)
    40  		println()
    41  	}
    42  	if f1 == f1 {
    43  		println()
    44  	}
    45  	if f1 != f1 {
    46  		println()
    47  	}
    48  	if f1 > f1 {
    49  		println()
    50  	}
    51  	if f1-f1 == 0 {
    52  		println()
    53  	}
    54  	if f2 == f2 {
    55  		println()
    56  	}
    57  	if fs == fs {
    58  		println()
    59  	}
    60  	if is == is { //@ diag(`identical expressions`)
    61  		println()
    62  	}
    63  	if t1 == t1 {
    64  		println()
    65  	}
    66  	if t2 == t2 { //@ diag(`identical expressions`)
    67  		println()
    68  	}
    69  }
    70  
    71  func fn2() {
    72  	_ = rand.Int() - rand.Int()
    73  	_ = rand.Int31() - rand.Int31()
    74  	_ = rand.Int31n(0) - rand.Int31n(0)
    75  	_ = rand.Int63() - rand.Int63()
    76  	_ = rand.Int63n(0) - rand.Int63n(0)
    77  	_ = rand.Intn(0) - rand.Intn(0)
    78  	_ = rand.Uint32() - rand.Uint32()
    79  	_ = rand.Uint64() - rand.Uint64()
    80  	_ = rand.ExpFloat64() - rand.ExpFloat64()
    81  	_ = rand.Float32() - rand.Float32()
    82  	_ = rand.Float64() - rand.Float64()
    83  	_ = rand.NormFloat64() - rand.NormFloat64()
    84  
    85  	var rng *rand.Rand
    86  	_ = rng.Int() - rng.Int()
    87  	_ = rng.Int31() - rng.Int31()
    88  	_ = rng.Int31n(0) - rng.Int31n(0)
    89  	_ = rng.Int63() - rng.Int63()
    90  	_ = rng.Int63n(0) - rng.Int63n(0)
    91  	_ = rng.Intn(0) - rng.Intn(0)
    92  	_ = rng.Uint32() - rng.Uint32()
    93  	_ = rng.Uint64() - rng.Uint64()
    94  	_ = rng.ExpFloat64() - rng.ExpFloat64()
    95  	_ = rng.Float32() - rng.Float32()
    96  	_ = rng.Float64() - rng.Float64()
    97  	_ = rng.NormFloat64() - rng.NormFloat64()
    98  
    99  	// not flagged; the return value is an interface and might be a float.
   100  	_ = rand.NewSource(0) == rand.NewSource(0)
   101  }