// errchk $G -e $D/$F.go

// Copyright 2009 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.

package main

// explicit conversion of constants is work in progress.
// the ERRORs in this block are debatable, but they're what
// the language spec says for now.
var x1 = string(1);
var x2 string = string(1);
var x3 = int(1.5);	// ERROR "convert|truncate"
var x4 int = int(1.5);	// ERROR "convert|truncate"
var x5 = "a" + string(1);
var x6 = int(1e100);	// ERROR "overflow"
var x7 = float(1e1000);	// ERROR "overflow"

// implicit conversions merit scrutiny
var s string;
var bad1 string = 1;	// ERROR "conver|incompatible|invalid|cannot"
var bad2 = s + 1;		// ERROR "conver|incompatible|invalid"
var bad3 = s + 'a';	// ERROR "conver|incompatible|invalid"
var bad4 = "a" + 1;	// ERROR "literals|incompatible|convert|invalid"
var bad5 = "a" + 'a';	// ERROR "literals|incompatible|convert|invalid"

var bad6 int = 1.5;	// ERROR "convert|truncate"
var bad7 int = 1e100;	// ERROR "overflow"
var bad8 float32 = 1e200;	// ERROR "overflow"

// but these implicit conversions are okay
var good1 string = "a";
var good2 int = 1.0;
var good3 int = 1e9;
var good4 float = 1e20;

// explicit conversion of string is okay
var _ = []int("abc")
var _ = []byte("abc")

// implicit is not
var _ []int = "abc"	// ERROR "cannot use|incompatible|invalid"
var _ []byte = "abc"	// ERROR "cannot use|incompatible|invalid"

// named string is okay
type Tstring string
var ss Tstring = "abc"
var _ = []int(ss)
var _ = []byte(ss)

// implicit is still not
var _ []int = ss	// ERROR "cannot use|incompatible|invalid"
var _ []byte = ss	// ERROR "cannot use|incompatible|invalid"

// named slice is not
type Tint []int
type Tbyte []byte
var _ = Tint("abc")	// ERROR "convert|incompatible|invalid"
var _ = Tbyte("abc")	// ERROR "convert|incompatible|invalid"

// implicit is still not
var _ Tint = "abc"	// ERROR "cannot use|incompatible|invalid"
var _ Tbyte = "abc"	// ERROR "cannot use|incompatible|invalid"
