blob: 21019533cebafc0b4dba8a4ffb16c199ccdeb20f [file] [log] [blame]
// 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.
// Test that basic operations on named types are valid
// and preserve the type.
package main
type Bool bool
type Map map[int]int
func (Map) M() {}
func asBool(Bool) {}
func main() {
var (
b Bool = true;
i, j int;
c = make(chan int);
m = make(Map);
)
asBool(b);
asBool(!b);
asBool(true);
asBool(*&b);
asBool(Bool(true));
asBool(1!=2); // ERROR "cannot use.*type bool.*as type Bool"
asBool(i < j); // ERROR "cannot use.*type bool.*as type Bool"
_, b = m[2]; // ERROR "cannot .* bool.*type Bool"
m[2] = 1, b; // ERROR "cannot use.*type Bool.*as type bool"
b = c<-1; // ERROR "cannot use.*type bool.*type Bool"
_ = b;
asBool(c<-1); // ERROR "cannot use.*type bool.*as type Bool"
_, b = <-c; // ERROR "cannot .* bool.*type Bool"
_ = b;
var inter interface{};
_, b = inter.(Map); // ERROR "cannot .* bool.*type Bool"
_ = b;
var minter interface{M()};
_, b = minter.(Map); // ERROR "cannot .* bool.*type Bool"
_ = b;
asBool(closed(c)); // ERROR "cannot use.*type bool.*as type Bool"
b = closed(c); // ERROR "cannot use.*type bool.*type Bool"
_ = b;
}