Fixed noinit pragma for closure variables (#20101)

This commit is contained in:
Yuriy Glukhov 2022-07-28 12:43:41 +02:00 • committed by GitHub
commit 424e87fd09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 2 deletions

View file

@ -405,7 +405,7 @@ proc genClosureVar(p: BProc, a: PNode) =
genLineDir(p, a) genLineDir(p, a)
if immediateAsgn: if immediateAsgn:
loadInto(p, a[0], a[2], v) loadInto(p, a[0], a[2], v)
else: elif sfNoInit notin a[0][1].sym.flags:
constructLoc(p, v) constructLoc(p, v)
proc genVarStmt(p: BProc, n: PNode) = proc genVarStmt(p: BProc, n: PNode) =

View file

@ -241,7 +241,8 @@ proc addField*(obj: PType; s: PSym; cache: IdentCache; idgen: IdGenerator): PSym
assert t.kind != tyTyped assert t.kind != tyTyped
propagateToOwner(obj, t) propagateToOwner(obj, t)
field.position = obj.n.len field.position = obj.n.len
field.flags = s.flags * {sfCursor} # sfNoInit flag for skField is used in closureiterator codegen
field.flags = s.flags * {sfCursor, sfNoInit}
obj.n.add newSymNode(field) obj.n.add newSymNode(field)
fieldCheck() fieldCheck()
result = field result = field