range clause must have = or :=
:= illegal in for-increment

R=r
OCL=21204
CL=21204
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index 858afc1..a85d6f7 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -197,6 +197,7 @@
 	uchar	method;		// OCALLMETH name
 	uchar	iota;		// OLITERAL made from iota
 	uchar	embedded;	// ODCLFIELD embedded type
+	uchar	colas;		// OAS resulting from :=
 
 	// most nodes
 	Node*	left;
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index 6bab840..429d2f3 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -419,6 +419,7 @@
 		$$ = rev($1);
 		$$ = colas($$, $3);
 		$$ = nod(OAS, $$, $3);
+		$$->colas = 1;
 		addtotop($$);
 	}
 |	LPRINT '(' oexpr_list ')'
@@ -554,9 +555,6 @@
 		popdcl();
 	}
 
-ocolas:
-|	LCOLAS
-
 orange_stmt:
 	osimple_stmt
 |	exprsym3_list_r '=' LRANGE expr
@@ -570,12 +568,12 @@
 		$$ = nod(ORANGE, $$, $6);
 		$$->etype = 0;
 	}
-|	exprsym3_list_r ocolas LRANGE expr
+|	exprsym3_list_r LCOLAS LRANGE expr
 	{
 		$$ = nod(ORANGE, $1, $4);
 		$$->etype = 1;
 	}
-|	exprsym3 ':' exprsym3 ocolas LRANGE expr
+|	exprsym3 ':' exprsym3 LCOLAS LRANGE expr
 	{
 		$$ = nod(OLIST, $1, $3);
 		$$ = nod(ORANGE, $$, $6);
@@ -592,6 +590,8 @@
 			break;
 		}
 		// init ; test ; incr
+		if($5 != N && $5->colas != 0)
+			yyerror("cannot declare in the for-increment");
 		$$ = nod(OFOR, N, N);
 		$$->ninit = $1;
 		$$->ntest = $3;
diff --git a/src/lib/json/generic.go b/src/lib/json/generic.go
index 9324b64..abdcd95 100644
--- a/src/lib/json/generic.go
+++ b/src/lib/json/generic.go
@@ -114,7 +114,7 @@
 func (j *Map) String() string {
 	s := "{";
 	first := true;
-	for k,v range j.m {
+	for k,v := range j.m {
 		if first {
 			first = false;
 		} else {
@@ -188,7 +188,7 @@
 		if len(m) != len(b.(*Map).m) {
 			return false;
 		}
-		for k,v range m {
+		for k,v := range m {
 			if !Equal(v, b.Get(k)) {
 				return false;
 			}
diff --git a/src/lib/json/generic_test.go b/src/lib/json/generic_test.go
index a061af0..0851c1c 100644
--- a/src/lib/json/generic_test.go
+++ b/src/lib/json/generic_test.go
@@ -64,7 +64,7 @@
 	if mapv == nil {
 		t.Fatalf("StringToJson(%#q) => nil, %v, %v", mapstr, ok, errtok);
 	}
-	for k,v range values {
+	for k,v := range values {
 		if v1 := mapv.Get(k); !Equal(v1, v) {
 			t.Errorf("MapTest: Walk(%#q) => %v, want %v", k, v1, v);
 		}