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