From a3e27ffa2c721b2ef3b0481d7db5c45039072050 Mon Sep 17 00:00:00 2001 From: Araq Date: Sun, 12 May 2019 15:06:31 +0200 Subject: [PATCH] fixes #11215 --- compiler/liftdestructors.nim | 4 ++-- compiler/lowerings.nim | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/liftdestructors.nim b/compiler/liftdestructors.nim index d308aedd90..c797f3ed30 100644 --- a/compiler/liftdestructors.nim +++ b/compiler/liftdestructors.nim @@ -364,10 +364,10 @@ proc ownedRefOp(c: var TLiftCtx; t: PType; body, x, y: PNode) = #var disposeCall = genBuiltin(c.graph, mDispose, "dispose", x) if isFinal(elemType): - addDestructorCall(c, elemType, actions, genDeref(x)) + addDestructorCall(c, elemType, actions, genDeref(x, nkDerefExpr)) actions.add callCodegenProc(c.graph, "nimRawDispose", c.info, x) else: - addDestructorCall(c, elemType, newNodeI(nkStmtList, c.info), genDeref(x)) + addDestructorCall(c, elemType, newNodeI(nkStmtList, c.info), genDeref(x, nkDerefExpr)) actions.add callCodegenProc(c.graph, "nimDestroyAndDispose", c.info, x) case c.kind diff --git a/compiler/lowerings.nim b/compiler/lowerings.nim index efaba5cf76..b6a8d0e488 100644 --- a/compiler/lowerings.nim +++ b/compiler/lowerings.nim @@ -300,8 +300,8 @@ proc genAddrOf*(n: PNode): PNode = result.typ = newType(tyPtr, n.typ.owner) result.typ.rawAddSon(n.typ) -proc genDeref*(n: PNode): PNode = - result = newNodeIT(nkHiddenDeref, n.info, +proc genDeref*(n: PNode; k = nkHiddenDeref): PNode = + result = newNodeIT(k, n.info, n.typ.skipTypes(abstractInst).sons[0]) result.add n