Expands codegenDecl to work in function params. fixes #22306 (#22307)

* Expands codegenDecl to work in function params. fixes #22306

* makes the test more concrete so T{lit} params dont match

* adds sfCodegenDecl
This commit is contained in:
Juan M Gómez
2023-07-23 15:42:20 +01:00
committed by GitHub
parent 808c9c6c2a
commit 49a108b302
7 changed files with 47 additions and 18 deletions

View File

@@ -0,0 +1,17 @@
discard """
targets: "cpp"
cmd: "nim cpp $file"
output: "3"
"""
{.emit:"""/*TYPESECTION*/
int operate(int x, int y, int (*func)(const int&, const int&)){
return func(x, y);
};
""".}
proc operate(x, y: int32, fn: proc(x, y: int32 ): int32 {.cdecl.}): int32 {.importcpp:"$1(@)".}
proc add(a {.codegenDecl:"const $#& $#".}, b {.codegenDecl:"const $# $#", byref.}: int32): int32 {.cdecl.} = a + b
echo operate(1, 2, add)