From 96e1949610bc805af451903ba5cc4d483f7b4dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20M=20G=C3=B3mez?= Date: Thu, 14 Sep 2023 16:37:30 +0100 Subject: [PATCH] implements RFC: [C++] Constructors as default initializers (#22694) Co-authored-by: Andreas Rumpf --- compiler/ccgstmts.nim | 15 ++++--- compiler/ccgtypes.nim | 18 ++++++++- compiler/cgen.nim | 12 ++++-- compiler/modulegraphs.nim | 3 +- compiler/semstmts.nim | 79 +++++++++++++++++++++++-------------- tests/cpp/tinitializers.nim | 33 ++++++++++++++++ 6 files changed, 119 insertions(+), 41 deletions(-) create mode 100644 tests/cpp/tinitializers.nim diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index d6220afbf4..de358e2426 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -289,14 +289,17 @@ proc potentialValueInit(p: BProc; v: PSym; value: PNode; result: var Rope) = #echo "New code produced for ", v.name.s, " ", p.config $ value.info genBracedInit(p, value, isConst = false, v.typ, result) -proc genCppVarForCtor(p: BProc, v: PSym; vn, value: PNode; decl: var Rope) = - var params = newRopeAppender() +proc genCppParamsForCtor(p: BProc; call: PNode): string = + result = "" var argsCounter = 0 - let typ = skipTypes(value[0].typ, abstractInst) + let typ = skipTypes(call[0].typ, abstractInst) assert(typ.kind == tyProc) - for i in 1.. 1 + for i in 1..