1
0
mirror of https://github.com/golang/go synced 2024-11-21 13:24:40 -07:00

go: require { } around else block

R=gri, ken, r
CC=golang-dev
https://golang.org/cl/4721044
This commit is contained in:
Russ Cox 2011-07-14 17:15:52 -04:00
parent 3f53475c97
commit 58e19aa4cb
3 changed files with 13 additions and 6 deletions

View File

@ -3762,7 +3762,7 @@ present, the "else" branch is executed.
</p>
<pre class="ebnf">
IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" Statement ] .
IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block ) ] .
</pre>
<pre>

View File

@ -1462,6 +1462,9 @@ non_dcl_stmt:
}
| if_stmt LELSE stmt
{
if($3->op != OIF && $3->op != OBLOCK)
yyerror("missing { } after else");
popdcl();
$$ = $1;
$$->nelse = list1($3);

View File

@ -53,25 +53,28 @@ func main() {
count = 0
if true {
count = count + 1
} else
} else {
count = count - 1
}
assertequal(count, 1, "if else true")
count = 0
if false {
count = count + 1
} else
} else {
count = count - 1
}
assertequal(count, -1, "if else false")
count = 0
if t:=1; false {
if t := 1; false {
count = count + 1
_ = t
t := 7
_ = t
} else
} else {
count = count - t
}
assertequal(count, -1, "if else false var")
count = 0
@ -80,8 +83,9 @@ func main() {
count = count + 1
t := 7
_ = t
} else
} else {
count = count - t
}
_ = t
assertequal(count, -1, "if else false var outside")
}