modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/fixedbugs/issue10135.go (about)

     1  // run
     2  
     3  // Copyright 2015 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Issue 10135: append a slice with zero-sized element used
     8  // to always return a slice with the same data pointer as the
     9  // old slice, even if it's nil, so this program used to panic
    10  // with nil pointer dereference because after append, s is a
    11  // slice with nil data pointer but non-zero len and cap.
    12  
    13  package main
    14  
    15  type empty struct{}
    16  
    17  func main() {
    18  	var s []empty
    19  
    20  	s = append(s, empty{})
    21  
    22  	for _, v := range s {
    23  		_ = v
    24  	}
    25  }