aboutsummaryrefslogtreecommitdiff
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
commit78ebe2b392f9d3fba87a0ea7dd75569fcb998488 (patch)
tree6d33c21a8c7d4ad0f8cdfd3d48a58bd69fec27c1 /test/named1.go
parentf6faa9de1f5767cc1b74e48452bdbe8f18536bf4 (diff)
downloadgo-78ebe2b392f9d3fba87a0ea7dd75569fcb998488.tar.gz
go-78ebe2b392f9d3fba87a0ea7dd75569fcb998488.zip
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 0000000000..406e73b193
--- /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;
+}
+