summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmd/gc/go.h1
-rw-r--r--src/cmd/gc/go.y10
-rw-r--r--src/lib/json/generic.go4
-rw-r--r--src/lib/json/generic_test.go2
4 files changed, 9 insertions, 8 deletions
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index 858afc1c1..a85d6f760 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -197,6 +197,7 @@ struct Node
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 6bab8402f..429d2f32b 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -419,6 +419,7 @@ simple_stmt:
$$ = rev($1);
$$ = colas($$, $3);
$$ = nod(OAS, $$, $3);
+ $$->colas = 1;
addtotop($$);
}
| LPRINT '(' oexpr_list ')'
@@ -554,9 +555,6 @@ compound_stmt:
popdcl();
}
-ocolas:
-| LCOLAS
-
orange_stmt:
osimple_stmt
| exprsym3_list_r '=' LRANGE expr
@@ -570,12 +568,12 @@ orange_stmt:
$$ = 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 @@ for_header:
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 9324b6479..abdcd9546 100644
--- a/src/lib/json/generic.go
+++ b/src/lib/json/generic.go
@@ -114,7 +114,7 @@ func (j *Map) Get(s string) Json {
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 @@ export func Equal(a, b Json) bool {
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 a061af032..0851c1c4a 100644
--- a/src/lib/json/generic_test.go
+++ b/src/lib/json/generic_test.go
@@ -64,7 +64,7 @@ export func TestJsonMap(t *testing.T) {
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);
}