diff options
-rw-r--r-- | compiler/cgen.nim | 4 | ||||
-rw-r--r-- | tests/cpp/t8241.nim | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index a57192f9c..32891c62c 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -574,11 +574,13 @@ proc loadDynamicLib(m: BModule, lib: PLib) = if lib.name == nil: internalError(m.config, "loadDynamicLib") proc mangleDynLibProc(sym: PSym): Rope = + # we have to build this as a single rope in order not to trip the + # optimization in genInfixCall if sfCompilerProc in sym.flags: # NOTE: sym.loc.r is the external name! result = rope(sym.name.s) else: - result = "Dl_$1_" % [rope(sym.id)] + result = rope(strutils.`%`("Dl_$1_", $sym.id)) proc symInDynamicLib(m: BModule, sym: PSym) = var lib = sym.annex diff --git a/tests/cpp/t8241.nim b/tests/cpp/t8241.nim new file mode 100644 index 000000000..8e98fda10 --- /dev/null +++ b/tests/cpp/t8241.nim @@ -0,0 +1,7 @@ +discard """ + targets: "cpp" + action: "compile" +""" + +proc foo(): cstring {.importcpp: "", dynlib: "".} +echo foo() |