summaryrefslogtreecommitdiff
path: root/test/chan
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-02-11 17:55:16 -0800
committerRuss Cox <rsc@golang.org>2009-02-11 17:55:16 -0800
commit70b2d809ec1f10ee5cebbf96c57bbb2d3a604b40 (patch)
tree3a27c60cd93482129d8beda588d769a2d7868d4d /test/chan
parent47cebf94596af35b46ae2d1d3c973b17dcc603a4 (diff)
downloadgo-70b2d809ec1f10ee5cebbf96c57bbb2d3a604b40.tar.gz
insert type assertions when narrowing.
R=r OCL=24349 CL=24913
Diffstat (limited to 'test/chan')
-rw-r--r--test/chan/powser2.go12
1 files changed, 6 insertions, 6 deletions
diff --git a/test/chan/powser2.go b/test/chan/powser2.go
index 6e769e98c..b48110819 100644
--- a/test/chan/powser2.go
+++ b/test/chan/powser2.go
@@ -126,7 +126,7 @@ func put(dat item, out *dch){
func get(in *dch) *rat {
seqno++;
in.req <- seqno;
- return <-in.dat;
+ return (<-in.dat).(*rat);
}
// Get one item from each of n demand channels
@@ -332,9 +332,9 @@ func Add(U, V PS) PS{
for {
<-Z.req;
uv = get2(U,V);
- switch end(uv[0])+2*end(uv[1]) {
+ switch end(uv[0].(*rat))+2*end(uv[1].(*rat)) {
case 0:
- Z.dat <- add(uv[0], uv[1]);
+ Z.dat <- add(uv[0].(*rat), uv[1].(*rat));
case 1:
Z.dat <- uv[1];
copy(V,Z);
@@ -448,13 +448,13 @@ func Mul(U, V PS) PS{
go func(U, V, Z PS){
<-Z.req;
uv := get2(U,V);
- if end(uv[0])!=0 || end(uv[1]) != 0 {
+ if end(uv[0].(*rat))!=0 || end(uv[1].(*rat)) != 0 {
Z.dat <- finis;
} else {
- Z.dat <- mul(uv[0],uv[1]);
+ Z.dat <- mul(uv[0].(*rat),uv[1].(*rat));
UU := Split(U);
VV := Split(V);
- W := Add(Cmul(uv[0],VV[0]),Cmul(uv[1],UU[0]));
+ W := Add(Cmul(uv[0].(*rat),VV[0]),Cmul(uv[1].(*rat),UU[0]));
<-Z.req;
Z.dat <- get(W);
copy(Add(W,Mul(UU[1],VV[1])),Z);