| // 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; |
| } |
| |