mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
don't use {.rtl.} for generics, otherwise -d:useNimRtl gives ambiguous identifier nimrtl error (#18406)
This commit is contained in:
@@ -1760,7 +1760,7 @@ func join*(a: openArray[string], sep: string = ""): string {.rtl,
|
||||
else:
|
||||
result = ""
|
||||
|
||||
func join*[T: not string](a: openArray[T], sep: string = ""): string {.rtl.} =
|
||||
func join*[T: not string](a: openArray[T], sep: string = ""): string =
|
||||
## Converts all elements in the container `a` to strings using `$`,
|
||||
## and concatenates them with `sep`.
|
||||
runnableExamples:
|
||||
|
||||
@@ -30,12 +30,13 @@ when defined(createNimRtl):
|
||||
{.pragma: inl.}
|
||||
{.pragma: compilerRtl, compilerproc, exportc: "nimrtl_$1", dynlib.}
|
||||
elif defined(useNimRtl):
|
||||
when defined(windows):
|
||||
const nimrtl* = "nimrtl.dll"
|
||||
elif defined(macosx):
|
||||
const nimrtl* = "libnimrtl.dylib"
|
||||
else:
|
||||
const nimrtl* = "libnimrtl.so"
|
||||
#[
|
||||
`{.rtl.}` should only be used for non-generic procs.
|
||||
]#
|
||||
const nimrtl* =
|
||||
when defined(windows): "nimrtl.dll"
|
||||
elif defined(macosx): "libnimrtl.dylib"
|
||||
else: "libnimrtl.so"
|
||||
{.pragma: rtl, importc: "nimrtl_$1", dynlib: nimrtl, gcsafe.}
|
||||
{.pragma: inl.}
|
||||
{.pragma: compilerRtl, compilerproc, importc: "nimrtl_$1", dynlib: nimrtl.}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
discard """
|
||||
output: "Done"
|
||||
cmd: "nim $target --debuginfo --hints:on --define:useNimRtl $options $file"
|
||||
"""
|
||||
|
||||
@@ -37,5 +36,8 @@ proc eval(n: PNode): int =
|
||||
for i in 0..100_000:
|
||||
discard eval(buildTree(2))
|
||||
|
||||
echo "Done"
|
||||
|
||||
# bug https://forum.nim-lang.org/t/8176; Error: ambiguous identifier: 'nimrtl'
|
||||
import std/strutils
|
||||
doAssert join(@[1, 2]) == "12"
|
||||
doAssert join(@[1.5, 2.5]) == "1.52.5"
|
||||
doAssert join(@["a", "bc"]) == "abc"
|
||||
|
||||
Reference in New Issue
Block a user