next steps for full closure support (2)
This commit is contained in:
parent
d5b01dfb7c
commit
98458a3076
1 changed files with 6 additions and 8 deletions
|
|
@ -404,14 +404,12 @@ proc generateClosureCreation(o: POuterContext, scope: PEnv): PNode =
|
||||||
result.add(newCall(getSysSym"internalNew", env))
|
result.add(newCall(getSysSym"internalNew", env))
|
||||||
|
|
||||||
# add assignment statements:
|
# add assignment statements:
|
||||||
for v, scope2 in idTablePairs(o.localsToEnv):
|
for local in scope.capturedVars:
|
||||||
if scope2 == scope:
|
let fieldAccess = indirectAccess(env, local, env.info)
|
||||||
let local = PSym(v)
|
if sfByCopy in local.flags or local.kind == skParam:
|
||||||
let fieldAccess = indirectAccess(env, local, env.info)
|
# add ``env.param = param``
|
||||||
if sfByCopy in local.flags or local.kind == skParam:
|
result.add(newAsgnStmt(fieldAccess, newSymNode(local)))
|
||||||
# add ``env.param = param``
|
IdNodeTablePut(o.localsToAccess, local, fieldAccess)
|
||||||
result.add(newAsgnStmt(fieldAccess, newSymNode(local)))
|
|
||||||
IdNodeTablePut(o.localsToAccess, local, fieldAccess)
|
|
||||||
# add support for 'up' references:
|
# add support for 'up' references:
|
||||||
for e, field in items(scope.deps):
|
for e, field in items(scope.deps):
|
||||||
# add ``env.up = env2``
|
# add ``env.up = env2``
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue