honnef.co/go/tools@v0.5.0-0.dev.0.20240520180541-dcae280a5e87/simple/s1011/testdata/src/example.com/CheckLoopAppend/loop-append.go.golden (about) 1 package pkg 2 3 type T struct { 4 F string 5 } 6 7 func fn1() { 8 var x []interface{} 9 var y []int 10 11 for _, v := range y { 12 x = append(x, v) 13 } 14 15 var a, b []int 16 b = append(b, a...) 17 18 var a2, b2 []int 19 b2 = append(b2, a2...) 20 21 var a3, b3 []int 22 b3 = append(b3, a3...) 23 24 var a4 []int 25 for i := range fn6() { 26 a4 = append(a4, fn6()[i]) 27 } 28 29 var m map[string]int 30 var c []int 31 for _, v := range m { 32 c = append(c, v) 33 } 34 35 var t []T 36 var m2 map[string][]T 37 38 for _, tt := range t { 39 m2[tt.F] = append(m2[tt.F], tt) 40 } 41 42 var out []T 43 for _, tt := range t { 44 out = append(m2[tt.F], tt) 45 } 46 _ = out 47 } 48 49 func fn2() { 50 var v struct { 51 V int 52 } 53 var in []int 54 var out []int 55 56 for _, v.V = range in { 57 out = append(out, v.V) 58 } 59 } 60 61 func fn3() { 62 var t []T 63 var out [][]T 64 var m2 map[string][]T 65 66 for _, tt := range t { 67 out = append(out, m2[tt.F]) 68 } 69 } 70 71 func fn4() { 72 var a, b, c []int 73 for _, v := range a { 74 b = append(c, v) 75 } 76 _ = b 77 } 78 79 func fn5() { 80 var t []T 81 var m2 map[string][]T 82 var out []T 83 for _, tt := range t { 84 out = append(m2[tt.F], tt) 85 } 86 _ = out 87 } 88 89 func fn6() []int { 90 return []int{1, 2, 3} 91 } 92 93 func fn7() { 94 var x []int 95 x = append(x, fn6()...) 96 97 for i := range fn6() { 98 // Purity does matter here 99 x = append(x, fn6()[i]) 100 } 101 } 102 103 func fn8() { 104 // The lhs isn't allowed to refer to i 105 var i int 106 var x []int 107 var y [][]int 108 for i = range x { 109 y[i] = append(y[i], x[i]) 110 } 111 for i := range x { 112 y[i] = append(y[i], x[i]) 113 } 114 } 115 116 func fn9() { 117 // The lhs isn't allowed to have side effects 118 bar := func() map[int][]int { return nil } 119 var x []int 120 for i := range x { 121 bar()[0] = append(bar()[0], x[i]) 122 } 123 }