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

     1  // run
     2  
     3  // Copyright 2012 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 5704: Conversions of empty strings to byte
     8  // or rune slices return empty but non-nil slices.
     9  
    10  package main
    11  
    12  type (
    13  	mystring string
    14  	mybytes  []byte
    15  	myrunes  []rune
    16  )
    17  
    18  func checkBytes(s []byte, arg string) {
    19  	if len(s) != 0 {
    20  		panic("len(" + arg + ") != 0")
    21  	}
    22  	if s == nil {
    23  		panic(arg + " == nil")
    24  	}
    25  }
    26  
    27  func checkRunes(s []rune, arg string) {
    28  	if len(s) != 0 {
    29  		panic("len(" + arg + ") != 0")
    30  	}
    31  	if s == nil {
    32  		panic(arg + " == nil")
    33  	}
    34  }
    35  
    36  func main() {
    37  	checkBytes([]byte(""), `[]byte("")`)
    38  	checkBytes([]byte(mystring("")), `[]byte(mystring(""))`)
    39  	checkBytes(mybytes(""), `mybytes("")`)
    40  	checkBytes(mybytes(mystring("")), `mybytes(mystring(""))`)
    41  
    42  	checkRunes([]rune(""), `[]rune("")`)
    43  	checkRunes([]rune(mystring("")), `[]rune(mystring(""))`)
    44  	checkRunes(myrunes(""), `myrunes("")`)
    45  	checkRunes(myrunes(mystring("")), `myrunes(mystring(""))`)
    46  }