Commit 7859ae8a authored by Ken Thompson's avatar Ken Thompson

removed a:b in range syntax

added another channel test

R=r
OCL=23488
CL=23488
parent 65ad3ce1
...@@ -538,23 +538,11 @@ orange_stmt: ...@@ -538,23 +538,11 @@ orange_stmt:
$$ = nod(ORANGE, $1, $4); $$ = nod(ORANGE, $1, $4);
$$->etype = 0; // := flag $$->etype = 0; // := flag
} }
| exprsym3 ':' exprsym3 '=' LRANGE expr
{
$$ = nod(OLIST, $1, $3);
$$ = nod(ORANGE, $$, $6);
$$->etype = 0;
}
| exprsym3_list_r LCOLAS LRANGE expr | exprsym3_list_r LCOLAS LRANGE expr
{ {
$$ = nod(ORANGE, $1, $4); $$ = nod(ORANGE, $1, $4);
$$->etype = 1; $$->etype = 1;
} }
| exprsym3 ':' exprsym3 LCOLAS LRANGE expr
{
$$ = nod(OLIST, $1, $3);
$$ = nod(ORANGE, $$, $6);
$$->etype = 1;
}
for_header: for_header:
osimple_stmt ';' orange_stmt ';' osimple_stmt osimple_stmt ';' orange_stmt ';' osimple_stmt
......
// $G $D/$F.go && $L $F.$A && ./$A.out
// 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.
package main
const N = 1000; // sent messages
const M = 10; // receiving goroutines
const W = 2; // channel buffering
var h [N]int; // marking of send/recv
func
r(c chan int, m int)
{
for {
select {
case r := <- c:
if h[r] != 1 {
panicln("r",
"m=", m,
"r=", r,
"h=", h[r]
);
}
h[r] = 2;
}
}
}
func
s(c chan int)
{
for n:=0; n<N; n++ {
r := n;
if h[r] != 0 {
panicln("s");
}
h[r] = 1;
c <- r;
}
}
func
main()
{
c := make(chan int, W);
for m:=0; m<M; m++ {
go r(c, m);
sys.Gosched();
}
sys.Gosched();
sys.Gosched();
s(c);
}
...@@ -76,10 +76,10 @@ main() ...@@ -76,10 +76,10 @@ main()
} }
/* /*
* key:value * key,value
*/ */
i = 0; i = 0;
for k:v := range a { for k,v := range a {
if v != f(k) { if v != f(k) {
panicln("key:value array range", k, v, a[k]); panicln("key:value array range", k, v, a[k]);
} }
...@@ -90,7 +90,7 @@ main() ...@@ -90,7 +90,7 @@ main()
} }
i = 0; i = 0;
for k:v := range p { for k,v := range p {
if v != f(k) { if v != f(k) {
panicln("key:value pointer range", k, v, p[k]); panicln("key:value pointer range", k, v, p[k]);
} }
...@@ -101,7 +101,7 @@ main() ...@@ -101,7 +101,7 @@ main()
} }
i = 0; i = 0;
for k:v := range m { for k,v := range m {
if v != f(k) { if v != f(k) {
panicln("key:value map range", k, v, m[k]); panicln("key:value map range", k, v, m[k]);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment