summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2024-05-16 02:52:18 +0800
committerGitHub <noreply@github.com>2024-05-15 20:52:18 +0200
commit2c8551556e5b51b7a7e487b1043b92d4ad34dbf0 (patch)
treeb423c469d9caa64c38d145d701b507a0893c9175 /compiler
parentc08356865da1386a4c999e7d2df23f13979a5c05 (diff)
downloadNim-2c8551556e5b51b7a7e487b1043b92d4ad34dbf0.tar.gz
fixes lifting subtype calling parent's hooks (#23612)
ref https://forum.nim-lang.org/t/11587

Tested with `gcc version 14.0.1 20240412` locally
Diffstat (limited to 'compiler')
-rw-r--r--compiler/liftdestructors.nim5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/liftdestructors.nim b/compiler/liftdestructors.nim
index 0e3518c5f..f62927cec 100644
--- a/compiler/liftdestructors.nim
+++ b/compiler/liftdestructors.nim
@@ -222,7 +222,10 @@ proc fillBodyObj(c: var TLiftCtx; n, body, x, y: PNode; enforceDefaultOp: bool)
 
 proc fillBodyObjTImpl(c: var TLiftCtx; t: PType, body, x, y: PNode) =
   if t.baseClass != nil:
-    fillBody(c, skipTypes(t.baseClass, abstractPtrs), body, x, y)
+    let obj = newNodeIT(nkHiddenSubConv, c.info, t.baseClass)
+    obj.add newNodeI(nkEmpty, c.info)
+    obj.add x
+    fillBody(c, skipTypes(t.baseClass, abstractPtrs), body, obj, y)
   fillBodyObj(c, t.n, body, x, y, enforceDefaultOp = false)
 
 proc fillBodyObjT(c: var TLiftCtx; t: PType, body, x, y: PNode) =