mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 14:00:35 +00:00
fixes #5136
This commit is contained in:
@@ -732,10 +732,12 @@ proc genProcNoForward(m: BModule, prc: PSym) =
|
||||
# dependency to a compilerproc:
|
||||
discard cgsym(m, prc.name.s)
|
||||
return
|
||||
if lfNoDecl in prc.loc.flags:
|
||||
if sfImportc in prc.flags:
|
||||
fillProcLoc(m, prc)
|
||||
useHeader(m, prc)
|
||||
genProcPrototype(m, prc)
|
||||
if lfHeader in prc.loc.flags:
|
||||
useHeader(m, prc)
|
||||
elif lfNoDecl notin prc.loc.flags:
|
||||
genProcPrototype(m, prc)
|
||||
elif prc.typ.callConv == ccInline:
|
||||
# We add inline procs to the calling module to enable C based inlining.
|
||||
# This also means that a check with ``q.declaredThings`` is wrong, we need
|
||||
@@ -760,15 +762,13 @@ proc genProcNoForward(m: BModule, prc: PSym) =
|
||||
symInDynamicLib(q, prc)
|
||||
else:
|
||||
symInDynamicLibPartial(m, prc)
|
||||
elif sfImportc notin prc.flags:
|
||||
else:
|
||||
var q = findPendingModule(m, prc)
|
||||
fillProcLoc(q, prc)
|
||||
useHeader(m, prc)
|
||||
genProcPrototype(m, prc)
|
||||
if q != nil and not containsOrIncl(q.declaredThings, prc.id):
|
||||
genProcAux(q, prc)
|
||||
else:
|
||||
fillProcLoc(m, prc)
|
||||
|
||||
proc requestConstImpl(p: BProc, sym: PSym) =
|
||||
var m = p.module
|
||||
|
||||
10
tests/cpp/tgen_prototype_for_importc.nim
Normal file
10
tests/cpp/tgen_prototype_for_importc.nim
Normal file
@@ -0,0 +1,10 @@
|
||||
discard """
|
||||
cmd: "nim cpp $file"
|
||||
output: '''Hello world'''
|
||||
"""
|
||||
|
||||
# bug #5136
|
||||
|
||||
{.compile: "foo.c".}
|
||||
proc myFunc(): cstring {.importc.}
|
||||
echo myFunc()
|
||||
Reference in New Issue
Block a user