mitigates #19364 [backport]; we make this bug more unlikely to appear by producing better code to begin with; real fix will come later (#19647)
This commit is contained in:
parent
afbcba909b
commit
12a0f88a52
1 changed files with 12 additions and 6 deletions
|
|
@ -74,14 +74,20 @@ proc lowerTupleUnpacking*(g: ModuleGraph; n: PNode; idgen: IdGenerator; owner: P
|
||||||
let value = n.lastSon
|
let value = n.lastSon
|
||||||
result = newNodeI(nkStmtList, n.info)
|
result = newNodeI(nkStmtList, n.info)
|
||||||
|
|
||||||
var temp = newSym(skTemp, getIdent(g.cache, genPrefix), nextSymId(idgen),
|
var tempAsNode: PNode
|
||||||
owner, value.info, g.config.options)
|
let avoidTemp = value.kind == nkSym
|
||||||
temp.typ = skipTypes(value.typ, abstractInst)
|
if avoidTemp:
|
||||||
incl(temp.flags, sfFromGeneric)
|
tempAsNode = value
|
||||||
|
else:
|
||||||
|
var temp = newSym(skTemp, getIdent(g.cache, genPrefix), nextSymId(idgen),
|
||||||
|
owner, value.info, g.config.options)
|
||||||
|
temp.typ = skipTypes(value.typ, abstractInst)
|
||||||
|
incl(temp.flags, sfFromGeneric)
|
||||||
|
tempAsNode = newSymNode(temp)
|
||||||
|
|
||||||
var v = newNodeI(nkVarSection, value.info)
|
var v = newNodeI(nkVarSection, value.info)
|
||||||
let tempAsNode = newSymNode(temp)
|
if not avoidTemp:
|
||||||
v.addVar(tempAsNode, value)
|
v.addVar(tempAsNode, value)
|
||||||
result.add(v)
|
result.add(v)
|
||||||
|
|
||||||
for i in 0..<n.len-2:
|
for i in 0..<n.len-2:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue