// run // Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Issue 5704: Conversions of empty strings to byte // or rune slices return empty but non-nil slices. package main type ( mystring string mybytes []byte myrunes []rune ) func checkBytes(s []byte, arg string) { if len(s) != 0 { panic("len(" + arg + ") != 0") } if s == nil { panic(arg + " == nil") } } func checkRunes(s []rune, arg string) { if len(s) != 0 { panic("len(" + arg + ") != 0") } if s == nil { panic(arg + " == nil") } } func main() { checkBytes([]byte(""), `[]byte("")`) checkBytes([]byte(mystring("")), `[]byte(mystring(""))`) checkBytes(mybytes(""), `mybytes("")`) checkBytes(mybytes(mystring("")), `mybytes(mystring(""))`) checkRunes([]rune(""), `[]rune("")`) checkRunes([]rune(mystring("")), `[]rune(mystring(""))`) checkRunes(myrunes(""), `myrunes("")`) checkRunes(myrunes(mystring("")), `myrunes(mystring(""))`) }