This commit is contained in:
Araq
2017-02-26 16:17:33 +01:00
parent 53f4bdad23
commit fb37d13f46
2 changed files with 32 additions and 4 deletions

View File

@@ -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) =

View 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