From c7f25419149d6b4b0723f0ef177bbaad72d7bc3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20M=20G=C3=B3mez?= Date: Wed, 24 May 2023 15:42:53 +0100 Subject: [PATCH] actually fixes #21889 "constructor pragma doing nothing in globals" (#21897) actually fixes #21889 --- compiler/ccgstmts.nim | 48 +++++++++++++++++++++++--------------- compiler/cgen.nim | 17 ++++++++++++-- tests/cpp/tconstructor.nim | 24 +++++++++++++++++++ 3 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 tests/cpp/tconstructor.nim diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index b57864b466..1ed546256d 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -288,15 +288,32 @@ 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 genCppVarForConstructor(p: BProc, v: PSym; vn, value: PNode; decl: var Rope) = + var params = newRopeAppender() + var argsCounter = 0 + let typ = skipTypes(value[0].typ, abstractInst) + assert(typ.kind == tyProc) + for i in 1..x = inX; + this->y = inY; + } + //CppClass() = default; +}; +""".} + +type CppClass* {.importcpp.} = object + x: int32 + y: int32 + +proc makeCppClass(x, y: int32): CppClass {.importcpp: "CppClass(@)", constructor.} + +var shouldCompile = makeCppClass(1, 2)