diff options
author | Göran Krampe <goran@3dicc.com> | 2015-05-20 11:59:02 +0200 |
---|---|---|
committer | Göran Krampe <goran@3dicc.com> | 2015-05-20 11:59:02 +0200 |
commit | 2cceaff88abdc2b25d93f34393bfcf4dc6b5ca3f (patch) | |
tree | ef9a30fc50340423969f4d40ac516bdabbb5075f /lib | |
parent | 5d4ee87f3b18f145c77075ac96e303b39015a515 (diff) | |
download | Nim-2cceaff88abdc2b25d93f34393bfcf4dc6b5ca3f.tar.gz |
Fixes #2749, traverse full inheritance for reprRecord
Diffstat (limited to 'lib')
-rw-r--r-- | lib/system/repr.nim | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/system/repr.nim b/lib/system/repr.nim index f1029ff6a..dbb14bd2c 100644 --- a/lib/system/repr.nim +++ b/lib/system/repr.nim @@ -193,11 +193,17 @@ when not defined(useNimRtl): proc reprRecord(result: var string, p: pointer, typ: PNimType, cl: var TReprClosure) = add result, "[" - let oldLen = result.len - reprRecordAux(result, p, typ.node, cl) - if typ.base != nil: - if oldLen != result.len: add result, ",\n" - reprRecordAux(result, p, typ.base.node, cl) + var curTyp = typ + var lastPart = "" + while curTyp.base != nil: + var part = "" + reprRecordAux(part, p, curTyp.node, cl) + if part.len > 0: + if lastPart.len > 0: + add result, ",\n" + add result, part + lastPart = part + curTyp = curTyp.base add result, "]" proc reprRef(result: var string, p: pointer, typ: PNimType, |