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