+++ /dev/null
-package pkg
-
-func fn(x int) {
- var z int
- var y int
- x = x // want `self-assignment`
- y = y // want `self-assignment`
- y, x, z = y, x, 1 // want `self-assignment of y to y` `self-assignment of x to x`
- y = x
- _ = y
- _ = x
- _ = z
- func() {
- x := x
- println(x)
- }()
-}
-
-func fn1() {
- var (
- x []byte
- ch chan int
- )
- x[42] = x[42] // want `self-assignment`
- x[pure(42)] = x[pure(42)] // want `self-assignment`
- x[pure(pure(42))] = x[pure(pure(42))] // want `self-assignment`
- x[impure(42)] = x[impure(42)]
- x[impure(pure(42))] = x[impure(pure(42))]
- x[pure(impure(42))] = x[pure(impure(42))]
- x[pure(<-ch)] = x[pure(<-ch)]
- x[pure(pure(<-ch))] = x[pure(pure(<-ch))]
- x[<-ch] = x[<-ch]
-
- type T struct {
- x []int
- }
- var ts []T
- ts[impure(42)].x = ts[impure(42)].x
- m := map[*int]int{}
- m[ptr1()] = m[ptr1()]
- m[ptr2()] = m[ptr2()]
- m[new(int)] = m[new(int)]
-
- m2 := map[int]int{}
- m2[len(x)] = m2[len(x)] // want `self-assignment`
-
- gen1()[0] = gen1()[0]
- gen2(0)[0] = gen2(0)[0] // want `self-assignment`
- gen3(0)[0] = gen3(0)[0]
-}
-
-func ptr1() *int {
- return new(int)
-}
-
-func ptr2() *int {
- x := 0
- return &x
-}
-
-func gen1() []int {
- return nil
-}
-
-func gen2(x int) []int {
- return nil
-}
-
-func gen3(x int) []int {
- return make([]int, 0)
-}
-
-func pure(n int) int {
- return n
-}
-
-func impure(n int) int {
- println(n)
- return n
-}