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  }