// 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. // conversions package conversions import "unsafe" // argument count var ( _ = int() /* ERROR "missing argument" */ _ = int(1, 2 /* ERROR "too many arguments" */ ) ) // numeric constant conversions are in const1.src. func string_conversions() { const A = string(65) assert(A == "A") const E = string(-1) assert(E == "\uFFFD") assert(E == string(1234567890)) type myint int assert(A == string(myint(65))) type mystring string const _ mystring = mystring("foo") const _ = string(true /* ERROR "cannot convert" */ ) const _ = string(1.2 /* ERROR "cannot convert" */ ) const _ = string(nil /* ERROR "cannot convert" */ ) // issues 11357, 11353: argument must be of integer type _ = string(0.0 /* ERROR "cannot convert" */ ) _ = string(0i /* ERROR "cannot convert" */ ) _ = string(1 /* ERROR "cannot convert" */ + 2i) } func interface_conversions() { type E interface{} type I1 interface{ m1() } type I2 interface{ m1() m2(x int) } type I3 interface{ m1() m2() int } var e E var i1 I1 var i2 I2 var i3 I3 _ = E(0) _ = E(nil) _ = E(e) _ = E(i1) _ = E(i2) _ = I1(0 /* ERROR "cannot convert" */ ) _ = I1(nil) _ = I1(i1) _ = I1(e /* ERROR "cannot convert" */ ) _ = I1(i2) _ = I2(nil) _ = I2(i1 /* ERROR "cannot convert" */ ) _ = I2(i2) _ = I2(i3 /* ERROR "cannot convert" */ ) _ = I3(nil) _ = I3(i1 /* ERROR "cannot convert" */ ) _ = I3(i2 /* ERROR "cannot convert" */ ) _ = I3(i3) // TODO(gri) add more tests, improve error message } func issue6326() { type T unsafe.Pointer var x T _ = uintptr(x) // see issue 6326 }