From 6817a06da43237322da47ad2e7b54bf33a026729 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Fri, 15 May 2026 19:44:54 +0800 Subject: [PATCH] oops --- compiler/ccgtypes.nim | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index d382e8faa1..0c0f4d6f57 100644 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -696,24 +696,6 @@ proc genCppInitializer(m: BModule, prc: BProc; typ: PType; didGenTemp: var bool) if prc == nil: assert p.blocks.len == 0, "BProc belongs to a struct doesnt have blocks" -# Unlike genCppInitializer which returns just the braced value list (e.g. "{a, b}"), -# genCppConstructorExpr returns a full type-prefixed expression (e.g. "Foo(a, b)"). -# This is used when a standalone construction expression is needed — e.g. on the -# right-hand side of an assignment — whereas genCppInitializer is used in variable -# declarations where the type is already written separately before the initializer. -proc genCppConstructorExpr(m: BModule, prc: BProc; typ: PType; didGenTemp: var bool): Snippet = - var params = "" - if typ.itemId in m.g.graph.initializersPerType: - let call = m.g.graph.initializersPerType[typ.itemId] - if call != nil: - var p = prc - if p == nil: - p = BProc(module: m) - params = genCppParamsForCtor(p, call, didGenTemp) - if prc == nil: - assert p.blocks.len == 0, "BProc belongs to a struct doesnt have blocks" - result = getTypeDesc(m, typ, dkVar) & "(" & params & ")" - proc genRecordFieldsAux(m: BModule; n: PNode, rectype: PType, check: var IntSet; result: var Builder; unionPrefix = "") = @@ -2130,3 +2112,21 @@ proc genTypeSection(m: BModule, n: PNode) = discard getTypeDescAux(m, s.typ, intSet, descKindFromSymKind(s.kind)) if m.g.generatedHeader != nil: discard getTypeDescAux(m.g.generatedHeader, s.typ, intSet, descKindFromSymKind(s.kind)) + +# Unlike genCppInitializer which returns just the braced value list (e.g. "{a, b}"), +# genCppConstructorExpr returns a full type-prefixed expression (e.g. "Foo(a, b)"). +# This is used when a standalone construction expression is needed — e.g. on the +# right-hand side of an assignment — whereas genCppInitializer is used in variable +# declarations where the type is already written separately before the initializer. +proc genCppConstructorExpr(m: BModule, prc: BProc; typ: PType; didGenTemp: var bool): Snippet = + var params = "" + if typ.itemId in m.g.graph.initializersPerType: + let call = m.g.graph.initializersPerType[typ.itemId] + if call != nil: + var p = prc + if p == nil: + p = BProc(module: m) + params = genCppParamsForCtor(p, call, didGenTemp) + if prc == nil: + assert p.blocks.len == 0, "BProc belongs to a struct doesnt have blocks" + result = getTypeDesc(m, typ, dkVar) & "(" & params & ")"