diff options
author | Russ Cox <rsc@golang.org> | 2009-09-24 17:54:47 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-09-24 17:54:47 -0700 |
commit | fd040dc26dfb978764ea484596d9b1b8e213640e (patch) | |
tree | 6d33c21a8c7d4ad0f8cdfd3d48a58bd69fec27c1 /test/named1.go | |
parent | 15a3bddf5304f2569c74b9c00f5ef07dc84717a8 (diff) | |
download | go-fd040dc26dfb978764ea484596d9b1b8e213640e.tar.gz |
test: comparisons have type bool
R=r
DELTA=81 (57 added, 24 deleted, 0 changed)
OCL=34991
CL=34996
Diffstat (limited to 'test/named1.go')
-rw-r--r-- | test/named1.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/test/named1.go b/test/named1.go new file mode 100644 index 000000000..406e73b19 --- /dev/null +++ b/test/named1.go @@ -0,0 +1,57 @@ +// 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 assign 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 assign bool.*type Bool" + _ = b; + + var inter interface{}; + _, b = inter.(Map); // ERROR "cannot assign bool.*type Bool" + _ = b; + + var minter interface{M()}; + _, b = minter.(Map); // ERROR "cannot assign 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; +} + |