mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.regabi] cmd/compile: expand documentation for Func.Closure{Vars,Enter}
I keep getting these confused and having to look at how the code actually uses them. Change-Id: I86baf22b76e7dddada6830df0fac241092f716bf Reviewed-on: https://go-review.googlesource.com/c/go/+/280993 Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
6ddbc75efd
commit
ece345aa69
1 changed files with 16 additions and 3 deletions
|
|
@ -65,9 +65,22 @@ type Func struct {
|
||||||
// include closurevars until transformclosure runs.
|
// include closurevars until transformclosure runs.
|
||||||
Dcl []*Name
|
Dcl []*Name
|
||||||
|
|
||||||
ClosureEnter Nodes // list of ONAME nodes (or OADDR-of-ONAME nodes, for output parameters) of captured variables
|
|
||||||
ClosureType Ntype // closure representation type
|
ClosureType Ntype // closure representation type
|
||||||
ClosureVars []*Name // closure params; each has closurevar set
|
|
||||||
|
// ClosureVars lists the free variables that are used within a
|
||||||
|
// function literal, but formally declared in an enclosing
|
||||||
|
// function. The variables in this slice are the closure function's
|
||||||
|
// own copy of the variables, which are used within its function
|
||||||
|
// body. They will also each have IsClosureVar set, and will have
|
||||||
|
// Byval set if they're captured by value.
|
||||||
|
ClosureVars []*Name
|
||||||
|
|
||||||
|
// ClosureEnter holds the expressions that the enclosing function
|
||||||
|
// will use to initialize the closure's free variables. These
|
||||||
|
// correspond one-to-one with the variables in ClosureVars, and will
|
||||||
|
// be either an ONAME node (if the variable is captured by value) or
|
||||||
|
// an OADDR-of-ONAME node (if not).
|
||||||
|
ClosureEnter Nodes
|
||||||
|
|
||||||
// Parents records the parent scope of each scope within a
|
// Parents records the parent scope of each scope within a
|
||||||
// function. The root scope (0) has no parent, so the i'th
|
// function. The root scope (0) has no parent, so the i'th
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue