spec: clarify panic behavior when deferring nil functions

Fixes #8107.

LGTM=iant, rsc, r
R=r, rsc, iant, ken
CC=golang-codereviews
https://golang.org/cl/145960043
This commit is contained in:
Robert Griesemer 2014-09-19 13:32:07 -07:00
parent 0e1a07167b
commit b4eb22d764
1 changed files with 7 additions and 4 deletions

View File

@ -1,6 +1,6 @@
<!--{
"Title": "The Go Programming Language Specification",
"Subtitle": "Version of August 28, 2014",
"Subtitle": "Version of September 19, 2014",
"Path": "/ref/spec"
}-->
@ -5243,13 +5243,16 @@ Calls of built-in functions are restricted as for
</p>
<p>
Each time the "defer" statement
Each time a "defer" statement
executes, the function value and parameters to the call are
<a href="#Calls">evaluated as usual</a>
and saved anew but the actual function body is not executed.
Instead, deferred functions are executed immediately before
and saved anew but the actual function is not invoked.
Instead, deferred functions are invoked immediately before
the surrounding function returns, in the reverse order
they were deferred.
If a deferred function value evaluates
to <code>nil</code>, execution <a href="#Handling_panics">panics</a>
when the function is invoked not when the "defer" statement is executed.
</p>
<p>