diff options
Diffstat (limited to 'src/cmd/vet/testdata/assign')
-rw-r--r-- | src/cmd/vet/testdata/assign/assign.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/cmd/vet/testdata/assign/assign.go b/src/cmd/vet/testdata/assign/assign.go new file mode 100644 index 0000000..112614e --- /dev/null +++ b/src/cmd/vet/testdata/assign/assign.go @@ -0,0 +1,31 @@ +// Copyright 2013 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 useless-assignment checker. + +package assign + +import "math/rand" + +type ST struct { + x int + l []int +} + +func (s *ST) SetX(x int, ch chan int) { + // Accidental self-assignment; it should be "s.x = x" + x = x // ERROR "self-assignment of x to x" + // Another mistake + s.x = s.x // ERROR "self-assignment of s.x to s.x" + + s.l[0] = s.l[0] // ERROR "self-assignment of s.l.0. to s.l.0." + + // Bail on any potential side effects to avoid false positives + s.l[num()] = s.l[num()] + rng := rand.New(rand.NewSource(0)) + s.l[rng.Intn(len(s.l))] = s.l[rng.Intn(len(s.l))] + s.l[<-ch] = s.l[<-ch] +} + +func num() int { return 2 } |