mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-03 10:24:44 +00:00
fixes #5439
This commit is contained in:
@@ -595,7 +595,7 @@ proc cgsym(m: BModule, name: string): Rope =
|
||||
|
||||
proc generateHeaders(m: BModule) =
|
||||
add(m.s[cfsHeaders], tnl & "#include \"nimbase.h\"" & tnl)
|
||||
|
||||
|
||||
for it in m.headerFiles:
|
||||
if it[0] == '#':
|
||||
add(m.s[cfsHeaders], rope(it.replace('`', '"') & tnl))
|
||||
@@ -1377,9 +1377,10 @@ proc myClose(graph: ModuleGraph; b: PPassContext, n: PNode): PNode =
|
||||
registerModuleToMain(m.g, m.module)
|
||||
|
||||
if sfMainModule in m.module.flags:
|
||||
incl m.flags, objHasKidsValid
|
||||
var disp = generateMethodDispatchers(graph)
|
||||
for i in 0..sonsLen(disp)-1: genProcAux(m, disp.sons[i].sym)
|
||||
if m.g.forwardedProcsCounter == 0:
|
||||
incl m.flags, objHasKidsValid
|
||||
let disp = generateMethodDispatchers(graph)
|
||||
for x in disp: genProcAux(m, x.sym)
|
||||
genMainProc(m)
|
||||
|
||||
proc cgenWriteModules*(backend: RootRef, config: ConfigRef) =
|
||||
|
||||
27
tests/ccgbugs/twrong_method.nim
Normal file
27
tests/ccgbugs/twrong_method.nim
Normal file
@@ -0,0 +1,27 @@
|
||||
discard """
|
||||
cmd: "nim c -d:release $file"
|
||||
output: '''correct method'''
|
||||
"""
|
||||
# bug #5439
|
||||
type
|
||||
Control* = ref object of RootObj
|
||||
|
||||
ControlImpl* = ref object of Control
|
||||
|
||||
Container* = ref object of ControlImpl
|
||||
|
||||
ContainerImpl* = ref object of Container
|
||||
|
||||
method testProc*(control: Control) {.base.} = echo "wrong method"
|
||||
|
||||
method testProc*(container: Container) = echo "correct method"
|
||||
|
||||
proc main()
|
||||
|
||||
main() # wrong method called
|
||||
|
||||
proc main() =
|
||||
var container = new ContainerImpl
|
||||
container.testProc()
|
||||
|
||||
# main() # correct method called
|
||||
Reference in New Issue
Block a user