I have this code: type Console* = ref object of RootObj ViewportConsole* = ref object of Console method draw*[T](self: Console, engine: T) {.base.} = discard method draw*[T](self: ViewportConsole, engine: T) = # ...
I store the consoles in a sequence, and iterate through them, like this: var consoles: seq[Console] consoles.add(new(ViewportConsole)) for console in consoles: console.draw(theEngineObject) The last line should call the different **draw** method for different console types, but it seems to be only calling the base one. It only calls the ViewportConsole implementation if I explicitly cast **console**. Is that a bug with generic methods, or am I doing this the wrong way? I was storing a reference to an **Engine** in the **Console** itself before, but **Engine** stores references to **Console** objects too, which was creating all sorts of problems related to cyclic dependencies, so I decided to use a generic method instead.