diff options
Diffstat (limited to 'test/chan')
| -rw-r--r-- | test/chan/fifo.go | 2 | ||||
| -rw-r--r-- | test/chan/goroutines.go | 4 | ||||
| -rw-r--r-- | test/chan/nonblock.go | 32 | ||||
| -rw-r--r-- | test/chan/powser1.go | 29 | ||||
| -rw-r--r-- | test/chan/powser2.go | 27 | ||||
| -rw-r--r-- | test/chan/select.go | 2 | ||||
| -rw-r--r-- | test/chan/sieve.go | 6 |
7 files changed, 48 insertions, 54 deletions
diff --git a/test/chan/fifo.go b/test/chan/fifo.go index 1152a6d666..eef494dd6f 100644 --- a/test/chan/fifo.go +++ b/test/chan/fifo.go @@ -23,7 +23,7 @@ func AsynchFifo() { } } -func Chain(ch *<-chan int, val int, in *<-chan int, out *chan<- int) { +func Chain(ch <-chan int, val int, in <-chan int, out chan<- int) { <-in; if <-ch != val { panic(val) diff --git a/test/chan/goroutines.go b/test/chan/goroutines.go index 3fd80f29b7..afc5ead30f 100644 --- a/test/chan/goroutines.go +++ b/test/chan/goroutines.go @@ -14,7 +14,7 @@ import ( "strconv"; ) -func f(left, right *chan int) { +func f(left, right chan int) { left <- <-right; } @@ -36,6 +36,6 @@ func main() { go f(left, right); left = right; } - go func(c *chan int) { c <- 1 }(right); + go func(c chan int) { c <- 1 }(right); <-leftmost; } diff --git a/test/chan/nonblock.go b/test/chan/nonblock.go index 5622e8382a..4d36bdbbf2 100644 --- a/test/chan/nonblock.go +++ b/test/chan/nonblock.go @@ -13,35 +13,35 @@ func pause() { for i:=0; i<100; i++ { sys.gosched() } } -func i32receiver(c *chan int32) { +func i32receiver(c chan int32) { if <-c != 123 { panic("i32 value") } } -func i32sender(c *chan int32) { +func i32sender(c chan int32) { c <- 234 } -func i64receiver(c *chan int64) { +func i64receiver(c chan int64) { if <-c != 123456 { panic("i64 value") } } -func i64sender(c *chan int64) { +func i64sender(c chan int64) { c <- 234567 } -func breceiver(c *chan bool) { +func breceiver(c chan bool) { if ! <-c { panic("b value") } } -func bsender(c *chan bool) { +func bsender(c chan bool) { c <- true } -func sreceiver(c *chan string) { +func sreceiver(c chan string) { if <-c != "hello" { panic("s value") } } -func ssender(c *chan string) { +func ssender(c chan string) { c <- "hello again" } @@ -57,19 +57,19 @@ func main() { c64 := new(chan int64, buffer); cb := new(chan bool, buffer); cs := new(chan string, buffer); - + i32, ok = <-c32; if ok { panic("blocked i32sender") } - + i64, ok = <-c64; if ok { panic("blocked i64sender") } - + b, ok = <-cb; if ok { panic("blocked bsender") } - + s, ok = <-cs; if ok { panic("blocked ssender") } - + go i32receiver(c32); pause(); ok = c32 <- 123; @@ -79,7 +79,7 @@ func main() { i32, ok = <-c32; if !ok { panic("i32sender") } if i32 != 234 { panic("i32sender value") } - + go i64receiver(c64); pause(); ok = c64 <- 123456; @@ -89,7 +89,7 @@ func main() { i64, ok = <-c64; if !ok { panic("i64sender") } if i64 != 234567 { panic("i64sender value") } - + go breceiver(cb); pause(); ok = cb <- true; @@ -99,7 +99,7 @@ func main() { b, ok = <-cb; if !ok { panic("bsender") } if !b{ panic("bsender value") } - + go sreceiver(cs); pause(); ok = cs <- "hello"; diff --git a/test/chan/powser1.go b/test/chan/powser1.go index 8222de0392..a010f69951 100644 --- a/test/chan/powser1.go +++ b/test/chan/powser1.go @@ -30,8 +30,8 @@ func (u *rat) eq(c item) bool { } type dch struct { - req *chan int; - dat *chan item; + req chan int; + dat chan item; nam int; } @@ -46,7 +46,7 @@ func Init(); func mkdch() *dch { c := chnameserial % len(chnames); chnameserial++; - d := new(dch); + d := new(*dch); d.req = new(chan int); d.dat = new(chan item); d.nam = c; @@ -54,7 +54,7 @@ func mkdch() *dch { } func mkdch2() *dch2 { - d2 := new(dch2); + d2 := new(*dch2); d2[0] = mkdch(); d2[1] = mkdch(); return d2; @@ -74,7 +74,7 @@ func mkdch2() *dch2 { // a signal on the release-wait channel tells the next newer // generation to begin servicing out[1]. -func dosplit(in *dch, out *dch2, wait *chan int ){ +func dosplit(in *dch, out *dch2, wait chan int ){ var t *dch; both := false; // do not service both channels @@ -127,9 +127,9 @@ func get(in *dch) *rat { func getn(in []*dch, n int) []item { // BUG n:=len(in); if n != 2 { panic("bad n in getn") }; - req := new([2] *chan int); - dat := new([2] *chan item); - out := new([2] item); + req := new(*[2] chan int); + dat := new(*[2] chan item); + out := new([]item, 2); var i int; var it item; for i=0; i<n; i++ { @@ -159,11 +159,8 @@ func getn(in []*dch, n int) []item { // Get one item from each of 2 demand channels -func get2(in0 *dch, in1 *dch) []item { - x := new([2] *dch); - x[0] = in0; - x[1] = in1; - return getn(x, 2); +func get2(in0 *dch, in1 *dch) []item { + return getn([]*dch{in0, in1}, 2); } func copy(in *dch, out *dch){ @@ -211,7 +208,7 @@ func gcd (u, v int64) int64{ func i2tor(u, v int64) *rat{ g := gcd(u,v); - r := new(rat); + r := new(*rat); if v > 0 { r.num = u/g; r.den = v/g; @@ -249,7 +246,7 @@ func add(u, v *rat) *rat { func mul(u, v *rat) *rat{ g1 := gcd(u.num,v.den); g2 := gcd(u.den,v.num); - r := new(rat); + r := new(*rat); r.num =(u.num/g1)*(v.num/g2); r.den = (u.den/g2)*(v.den/g1); return r; @@ -649,7 +646,7 @@ func main() { check(Ones, one, 5, "Ones"); check(Add(Ones, Ones), itor(2), 0, "Add Ones Ones"); // 1 1 1 1 1 check(Add(Ones, Twos), itor(3), 0, "Add Ones Twos"); // 3 3 3 3 3 - a := new([N] *rat); + a := new([] *rat, N); d := Diff(Ones); // BUG: want array initializer for i:=0; i < N; i++ { diff --git a/test/chan/powser2.go b/test/chan/powser2.go index c72c2fad55..5f2d1dc8cb 100644 --- a/test/chan/powser2.go +++ b/test/chan/powser2.go @@ -35,8 +35,8 @@ func (u *rat) eq(c item) bool { } type dch struct { - req *chan int; - dat *chan item; + req chan int; + dat chan item; nam int; } @@ -51,7 +51,7 @@ func Init(); func mkdch() *dch { c := chnameserial % len(chnames); chnameserial++; - d := new(dch); + d := new(*dch); d.req = new(chan int); d.dat = new(chan item); d.nam = c; @@ -59,7 +59,7 @@ func mkdch() *dch { } func mkdch2() *dch2 { - d2 := new(dch2); + d2 := new(*dch2); d2[0] = mkdch(); d2[1] = mkdch(); return d2; @@ -79,7 +79,7 @@ func mkdch2() *dch2 { // a signal on the release-wait channel tells the next newer // generation to begin servicing out[1]. -func dosplit(in *dch, out *dch2, wait *chan int ){ +func dosplit(in *dch, out *dch2, wait chan int ){ var t *dch; both := false; // do not service both channels @@ -132,9 +132,9 @@ func get(in *dch) *rat { func getn(in []*dch, n int) []item { // BUG n:=len(in); if n != 2 { panic("bad n in getn") }; - req := new([2] *chan int); - dat := new([2] *chan item); - out := new([2] item); + req := new([] chan int, 2); + dat := new([] chan item, 2); + out := new([]item, 2); var i int; var it item; for i=0; i<n; i++ { @@ -165,10 +165,7 @@ func getn(in []*dch, n int) []item { // Get one item from each of 2 demand channels func get2(in0 *dch, in1 *dch) []item { - x := new([2] *dch); - x[0] = in0; - x[1] = in1; - return getn(x, 2); + return getn([]*dch{in0, in1}, 2); } func copy(in *dch, out *dch){ @@ -216,7 +213,7 @@ func gcd (u, v int64) int64{ func i2tor(u, v int64) *rat{ g := gcd(u,v); - r := new(rat); + r := new(*rat); if v > 0 { r.num = u/g; r.den = v/g; @@ -254,7 +251,7 @@ func add(u, v *rat) *rat { func mul(u, v *rat) *rat{ g1 := gcd(u.num,v.den); g2 := gcd(u.den,v.num); - r := new(rat); + r := new(*rat); r.num =(u.num/g1)*(v.num/g2); r.den = (u.den/g2)*(v.den/g1); return r; @@ -654,7 +651,7 @@ func main() { check(Ones, one, 5, "Ones"); check(Add(Ones, Ones), itor(2), 0, "Add Ones Ones"); // 1 1 1 1 1 check(Add(Ones, Twos), itor(3), 0, "Add Ones Twos"); // 3 3 3 3 3 - a := new([N] *rat); + a := new([]*rat, N); d := Diff(Ones); // BUG: want array initializer for i:=0; i < N; i++ { diff --git a/test/chan/select.go b/test/chan/select.go index 470e151818..3158ee6c29 100644 --- a/test/chan/select.go +++ b/test/chan/select.go @@ -14,7 +14,7 @@ func GetValue() uint { return 1 << shift } -func Send(a, b *chan uint) int { +func Send(a, b chan uint) int { var i int; LOOP: for { diff --git a/test/chan/sieve.go b/test/chan/sieve.go index f45373b483..b6bcdb33da 100644 --- a/test/chan/sieve.go +++ b/test/chan/sieve.go @@ -10,7 +10,7 @@ package main // Send the sequence 2, 3, 4, ... to channel 'ch'. -func Generate(ch *chan<- int) { +func Generate(ch chan<- int) { for i := 2; ; i++ { ch <- i // Send 'i' to channel 'ch'. } @@ -18,7 +18,7 @@ func Generate(ch *chan<- int) { // Copy the values from channel 'in' to channel 'out', // removing those divisible by 'prime'. -func Filter(in *<-chan int, out *chan<- int, prime int) { +func Filter(in <-chan int, out chan<- int, prime int) { for { i := <-in; // Receive value of new variable 'i' from 'in'. if i % prime != 0 { @@ -28,7 +28,7 @@ func Filter(in *<-chan int, out *chan<- int, prime int) { } // The prime sieve: Daisy-chain Filter processes together. -func Sieve(primes *chan<- int) { +func Sieve(primes chan<- int) { ch := new(chan int); // Create a new channel. go Generate(ch); // Start Generate() as a subprocess. for { |
