Commit 94849d5a authored by Robert Griesemer's avatar Robert Griesemer

spec: clarify that break/continue do not work across function boundaries

Also made it extra clear for goto statements (even though label scopes
are already limited to the function defining a label).

Fixes #8040.

LGTM=r, rsc
R=r, rsc, iant, ken
CC=golang-codereviews
https://golang.org/cl/99550043
parent ef258612
<!--{
"Title": "The Go Programming Language Specification",
"Subtitle": "Version of May 22, 2014",
"Subtitle": "Version of May 28, 2014",
"Path": "/ref/spec"
}-->
......@@ -5093,7 +5093,8 @@ func f(n int) (res int, err error) {
A "break" statement terminates execution of the innermost
<a href="#For_statements">"for"</a>,
<a href="#Switch_statements">"switch"</a>, or
<a href="#Select_statements">"select"</a> statement.
<a href="#Select_statements">"select"</a> statement
within the same function.
</p>
<pre class="ebnf">
......@@ -5127,6 +5128,7 @@ OuterLoop:
<p>
A "continue" statement begins the next iteration of the
innermost <a href="#For_statements">"for" loop</a> at its post statement.
The "for" loop must be within the same function.
</p>
<pre class="ebnf">
......@@ -5154,7 +5156,8 @@ RowLoop:
<h3 id="Goto_statements">Goto statements</h3>
<p>
A "goto" statement transfers control to the statement with the corresponding label.
A "goto" statement transfers control to the statement with the corresponding label
within the same function.
</p>
<pre class="ebnf">
......
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