]> Cypherpunks.ru repositories - gostls13.git/commitdiff
removed a:b in range syntax
authorKen Thompson <ken@golang.org>
Mon, 26 Jan 2009 19:34:38 +0000 (11:34 -0800)
committerKen Thompson <ken@golang.org>
Mon, 26 Jan 2009 19:34:38 +0000 (11:34 -0800)
added another channel test

R=r
OCL=23488
CL=23488

src/cmd/gc/go.y
test/ken/chan1.go [new file with mode: 0644]
test/ken/range.go

index e8843a97e63de46a5c32d70910b577be87212261..0a7cd0813bba1a67dc5700735719344016891e46 100644 (file)
@@ -538,23 +538,11 @@ orange_stmt:
                $$ = nod(ORANGE, $1, $4);
                $$->etype = 0;  // := flag
        }
-|      exprsym3 ':' exprsym3 '=' LRANGE expr
-       {
-               $$ = nod(OLIST, $1, $3);
-               $$ = nod(ORANGE, $$, $6);
-               $$->etype = 0;
-       }
 |      exprsym3_list_r LCOLAS LRANGE expr
        {
                $$ = nod(ORANGE, $1, $4);
                $$->etype = 1;
        }
-|      exprsym3 ':' exprsym3 LCOLAS LRANGE expr
-       {
-               $$ = nod(OLIST, $1, $3);
-               $$ = nod(ORANGE, $$, $6);
-               $$->etype = 1;
-       }
 
 for_header:
        osimple_stmt ';' orange_stmt ';' osimple_stmt
diff --git a/test/ken/chan1.go b/test/ken/chan1.go
new file mode 100644 (file)
index 0000000..c6d7825
--- /dev/null
@@ -0,0 +1,56 @@
+// $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);
+}
index 2417580ddbf357c32c241c377b160b448848d162..55e168920ba01a60cf168762e3c384c9f03575b4 100644 (file)
@@ -76,10 +76,10 @@ main()
        }
 
        /*
-        * key:value
+        * key,value
         */
        i = 0;
-       for k:v := range a {
+       for k,v := range a {
                if v != f(k) {
                        panicln("key:value array range", k, v, a[k]);
                }
@@ -90,7 +90,7 @@ main()
        }
 
        i = 0;
-       for k:v := range p {
+       for k,v := range p {
                if v != f(k) {
                        panicln("key:value pointer range", k, v, p[k]);
                }
@@ -101,7 +101,7 @@ main()
        }
 
        i = 0;
-       for k:v := range m {
+       for k,v := range m {
                if v != f(k) {
                        panicln("key:value map range", k, v, m[k]);
                }