diff options
Diffstat (limited to 'compiler/plugins/locals.nim')
-rw-r--r-- | compiler/plugins/locals.nim | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/compiler/plugins/locals.nim b/compiler/plugins/locals.nim index f3ee94547..d3046cd65 100644 --- a/compiler/plugins/locals.nim +++ b/compiler/plugins/locals.nim @@ -15,25 +15,24 @@ import ".." / [ast, astalgo, proc semLocals*(c: PContext, n: PNode): PNode = var counter = 0 var tupleType = newTypeS(tyTuple, c) - result = newNodeIT(nkPar, n.info, tupleType) + result = newNodeIT(nkTupleConstr, n.info, tupleType) tupleType.n = newNodeI(nkRecList, n.info) let owner = getCurrOwner(c) # for now we skip openarrays ... - for scope in walkScopes(c.currentScope): - if scope == c.topLevelScope: break + for scope in localScopesFrom(c, c.currentScope): for it in items(scope.symbols): if it.kind in skLocalVars and it.typ.skipTypes({tyGenericInst, tyVar}).kind notin {tyVarargs, tyOpenArray, tyTypeDesc, tyStatic, tyUntyped, tyTyped, tyEmpty}: if it.owner == owner: - var field = newSym(skField, it.name, owner, n.info) + var field = newSym(skField, it.name, c.idgen, owner, n.info) field.typ = it.typ.skipTypes({tyVar}) field.position = counter inc(counter) tupleType.n.add newSymNode(field) - addSonSkipIntLit(tupleType, field.typ) + addSonSkipIntLit(tupleType, field.typ, c.idgen) var a = newSymNode(it, result.info) if it.typ.skipTypes({tyGenericInst}).kind == tyVar: a = newDeref(a) |