diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2019-05-23 19:32:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-23 19:32:44 +0200 |
commit | aa4cf92ae851a466317e59835b5968139b9648ed (patch) | |
tree | 4239dc6dfa19e682b2bfdfaee807ccc3c529dd24 /compiler | |
parent | 44cc5f6360c7ccc96c296948b2524bd2cdebf1f0 (diff) | |
download | Nim-aa4cf92ae851a466317e59835b5968139b9648ed.tar.gz |
fixes #11309 (#11310)
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/cgen.nim | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 0585a2be0..be155df8d 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -357,6 +357,16 @@ proc genObjectInit(p: BProc, section: TCProcSection, t: PType, a: TLoc, var r = if takeAddr: addrLoc(p.config, a) else: rdLoc(a) linefmt(p, section, "#objectInit($1, $2);$n", [r, genTypeInfo(p.module, t, a.lode.info)]) + if isException(t): + var r = rdLoc(a) + if not takeAddr: r = "(*$1)" % [r] + var s = skipTypes(t, abstractInst) + if not p.module.compileToCpp: + while s.kind == tyObject and s.sons[0] != nil and s.sym.magic != mException: + add(r, ".Sup") + s = skipTypes(s.sons[0], skipPtrs) + linefmt(p, section, "$1.name = $2;$n", [r, makeCString(t.skipTypes(abstractInst).sym.name.s)]) + type TAssignmentFlag = enum needToCopy |