diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2018-07-27 18:21:32 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-07-27 18:21:32 +0200 |
commit | 700448f359fcaa397793d314eff7cf3aa2b13d18 (patch) | |
tree | 50ae48f8fbc453251e4ed2f0b186da8904fbd70b /compiler/destroyer.nim | |
parent | ef4b755183f6564cc0f35cdf01794626c4e5fe2f (diff) | |
download | Nim-700448f359fcaa397793d314eff7cf3aa2b13d18.tar.gz |
destroyer pass: adaptations for the new destructor based runtime
Diffstat (limited to 'compiler/destroyer.nim')
-rw-r--r-- | compiler/destroyer.nim | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/destroyer.nim b/compiler/destroyer.nim index c2a74edb1..bd735560a 100644 --- a/compiler/destroyer.nim +++ b/compiler/destroyer.nim @@ -258,8 +258,10 @@ proc registerDropBit(c: var Con; s: PSym) = c.toDropBit[s.id] = result # generate: # if not sinkParam_AliveBit: `=destroy`(sinkParam) - c.destroys.add newTree(nkIfStmt, - newTree(nkElifBranch, newSymNode result, genDestroy(c, s.typ, newSymNode s))) + let t = s.typ.skipTypes({tyGenericInst, tyAlias, tySink}) + if t.destructor != nil: + c.destroys.add newTree(nkIfStmt, + newTree(nkElifBranch, newSymNode result, genDestroy(c, t, newSymNode s))) proc p(n: PNode; c: var Con): PNode |