mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 06:18:51 +00:00
[Cpp] Fixes an issue when mixing hooks and calls (#23428)
This commit is contained in:
@@ -369,7 +369,10 @@ proc genSingleVar(p: BProc, v: PSym; vn, value: PNode) =
|
||||
line(p, cpsStmts, decl)
|
||||
else:
|
||||
tmp = initLocExprSingleUse(p, value)
|
||||
lineF(p, cpsStmts, "$# = $#;\n", [decl, tmp.rdLoc])
|
||||
if value.kind == nkEmpty:
|
||||
lineF(p, cpsStmts, "$#;\n", [decl])
|
||||
else:
|
||||
lineF(p, cpsStmts, "$# = $#;\n", [decl, tmp.rdLoc])
|
||||
return
|
||||
assignLocalVar(p, vn)
|
||||
initLocalVar(p, v, imm)
|
||||
|
||||
@@ -1208,6 +1208,7 @@ proc genProcAux*(m: BModule, prc: PSym) =
|
||||
elif sfConstructor in prc.flags:
|
||||
resNode.sym.loc.flags.incl lfIndirect
|
||||
fillLoc(resNode.sym.loc, locParam, resNode, "this", OnHeap)
|
||||
prc.loc.r = getTypeDesc(m, resNode.sym.loc.t, dkVar)
|
||||
else:
|
||||
fillResult(p.config, resNode, prc.typ)
|
||||
assignParam(p, res, prc.typ.returnType)
|
||||
|
||||
@@ -115,4 +115,17 @@ type Foo {.exportc.} = object
|
||||
|
||||
proc makeFoo(): Foo {.used, constructor, nodecl.} = discard
|
||||
|
||||
echo $Foo()
|
||||
echo $Foo()
|
||||
|
||||
type Boo = object
|
||||
proc `=copy`(dest: var Boo; src: Boo) = discard
|
||||
|
||||
proc makeBoo(): Boo {.constructor.} = Boo()
|
||||
proc makeBoo2(): Boo = Boo()
|
||||
|
||||
block:
|
||||
proc main =
|
||||
var b = makeBoo()
|
||||
var b2 = makeBoo2()
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user