diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/cgen.nim | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 165e4c115..f87082866 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -406,7 +406,12 @@ proc resetLoc(p: BProc, loc: var TLoc) = if isImportedCppType(typ): return if optSeqDestructors in p.config.globalOptions and typ.kind in {tyString, tySequence}: assert rdLoc(loc) != nil - linefmt(p, cpsStmts, "$1.len = 0; $1.p = NIM_NIL;$n", [rdLoc(loc)]) + + let atyp = skipTypes(loc.t, abstractInst) + if atyp.kind in {tyVar, tyLent}: + linefmt(p, cpsStmts, "$1->len = 0; $1->p = NIM_NIL;$n", [rdLoc(loc)]) + else: + linefmt(p, cpsStmts, "$1.len = 0; $1.p = NIM_NIL;$n", [rdLoc(loc)]) elif not isComplexValueType(typ): if containsGcRef: var nilLoc: TLoc |