summary refs log tree commit diff stats
path: root/compiler/cgen.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/cgen.nim')
-rw-r--r--compiler/cgen.nim5
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim
index 678a15bc9..f8d62e1af 100644
--- a/compiler/cgen.nim
+++ b/compiler/cgen.nim
@@ -1171,6 +1171,11 @@ proc genProcAux*(m: BModule, prc: PSym) =
       returnStmt = ropecg(p.module, "\treturn $1;$n", [rdLoc(res.loc)])
     elif sfConstructor in prc.flags:
       fillLoc(resNode.sym.loc, locParam, resNode, "this", OnHeap)
+      let ty = resNode.sym.typ[0] #generate nim's ctor
+      for i in 1..<resNode.sym.ast.len:
+        let field = resNode.sym.ast[i]
+        genFieldObjConstr(p, ty, useTemp = false, isRef = false, 
+          field[0], field[1], check = nil, resNode.sym.loc, "(*this)", tmpInfo)
     else:
       fillResult(p.config, resNode, prc.typ)
       assignParam(p, res, prc.typ[0])