From e2c2ae8e7e54ab333b578f707ac89c87c3390b4c Mon Sep 17 00:00:00 2001 From: cooldome Date: Fri, 23 Mar 2018 12:28:22 +0000 Subject: [PATCH] fixes #7392 (#7395) --- compiler/ccgexprs.nim | 1 + tests/ccgbugs/mymodule.nim | 4 +++- tests/ccgbugs/tforward_decl_only.nim | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 060a5fdbd..6ea56d71d 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -2044,6 +2044,7 @@ proc upConv(p: BProc, n: PNode, d: var TLoc) = if t.kind notin {tyVar, tyLent} or not p.module.compileToCpp: r = "(*$1)" % [r] t = skipTypes(t.lastSon, abstractInst) + discard getTypeDesc(p.module, t) if not p.module.compileToCpp: while t.kind == tyObject and t.sons[0] != nil: add(r, ".Sup") diff --git a/tests/ccgbugs/mymodule.nim b/tests/ccgbugs/mymodule.nim index d3306ec49..8c78cdf9b 100644 --- a/tests/ccgbugs/mymodule.nim +++ b/tests/ccgbugs/mymodule.nim @@ -1,7 +1,9 @@ type MyRefObject* = ref object s: string - + + BaseObj* = ref object of RootObj + ChildObj* = ref object of BaseObj proc newMyRefObject*(s: string): MyRefObject = new(result) diff --git a/tests/ccgbugs/tforward_decl_only.nim b/tests/ccgbugs/tforward_decl_only.nim index f4e9c216e..2a867bc3b 100644 --- a/tests/ccgbugs/tforward_decl_only.nim +++ b/tests/ccgbugs/tforward_decl_only.nim @@ -27,3 +27,8 @@ proc f(foo: ptr Foo, foo2: ptr Foo2): cint = if foo2 != nil: {.emit: [result, " = ", foo2[], ".b;"].} discard f(nil, nil) + + +# bug #7392 +var x1: BaseObj +var x2 = ChildObj(x1)