summaryrefslogtreecommitdiff
path: root/test/named1.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-09-24 17:54:47 -0700
committerRuss Cox <rsc@golang.org>2009-09-24 17:54:47 -0700
commitfd040dc26dfb978764ea484596d9b1b8e213640e (patch)
tree6d33c21a8c7d4ad0f8cdfd3d48a58bd69fec27c1 /test/named1.go
parent15a3bddf5304f2569c74b9c00f5ef07dc84717a8 (diff)
downloadgo-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.go57
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;
+}
+