C++: ptr fields now pulls the whole type if it's a member in nkDotExpr (#22855)

This commit is contained in:
Juan M Gómez
2023-10-23 07:59:14 +01:00
committed by GitHub
parent c13c48500b
commit ca577dbab1
3 changed files with 24 additions and 1 deletions

View File

@@ -851,6 +851,12 @@ proc lookupFieldAgain(p: BProc, ty: PType; field: PSym; r: var Rope;
proc genRecordField(p: BProc, e: PNode, d: var TLoc) =
var a: TLoc = default(TLoc)
if p.module.compileToCpp and e.kind == nkDotExpr and e[1].kind == nkSym and e[1].typ.kind == tyPtr:
# special case for C++: we need to pull the type of the field as member and friends require the complete type.
let typ = e[1].typ[0]
if typ.itemId in p.module.g.graph.memberProcsPerType:
discard getTypeDesc(p.module, typ)
genRecordFieldAux(p, e, d, a)
var r = rdLoc(a)
var f = e[1].sym