diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/named.go | 24 | ||||
-rw-r--r-- | test/named1.go | 57 |
2 files changed, 57 insertions, 24 deletions
diff --git a/test/named.go b/test/named.go index 47a1032bf..a52490215 100644 --- a/test/named.go +++ b/test/named.go @@ -68,34 +68,10 @@ func main() { asBool(!b); isBool(!b); asBool(true); - asBool(1!=2); asBool(*&b); isBool(*&b); asBool(Bool(true)); isBool(Bool(true)); - asBool(i < Int(f)); - - _, b = m[2]; - m[2] = 1, b; - - b = c<-1; - _ = b; - asBool(c<-1); - - _, b = <-c; - _ = b; - - var inter interface{}; - _, b = inter.(Map); - _ = b; - - var minter interface{M()}; - _, b = minter.(Map); - _ = b; - - asBool(closed(c)); - b = closed(c); - _ = b; asChan(c); isChan(c); 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; +} + |