| // 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(""))`) | |
| } |