I am revisiting this topic after I noticed the new [virtual pragma](https://nim-lang.github.io/Nim/manual_experimental.html#virtual-pragma).
My objective is to get something like [this](https://github.com/gkv311/occt-hello/blob/master/occt-ais-hello/OcctAisHello.cpp#L93-L99): virtual void ProcessExpose() override { if (!myView.IsNull()) { FlushViewEvents (myContext, myView, true); } } Run I am trying the following: proc processExpose*(self: OcctAisHello) {.virtual:"$1() override".} = var this = self if not self.myView.isNull: this.flushViewEvents( self.myContext, self.myView, true ) Run and I am getting the following error `marked 'override', but does not override`: /home/jose/.cache/nim/viewer04_d/@mviewer04.nim.cpp:118:38: error: 'virtual void tyObject_OcctAisHello__XdxJIqQ0m9cy9c9aT1sCM6pjA::processExpose()' marked 'override', but does not override 118 | N_LIB_PRIVATE N_NOCONV(virtual void, processExpose)() override; | ^~~~~~~~~~~~~ Run Why is that? The generated code looks like: ... N_LIB_PRIVATE N_NOCONV(virtual void, processExpose)() override; ... N_LIB_PRIVATE N_NOCONV(void, tyObject_OcctAisHello__XdxJIqQ0m9cy9c9aT1sCM6pjA::processExpose)() { nimfr_("processExpose", "/home/jose/src/nimlang/occt.nim/examples/06 Visualization/viewer04.nim"); nimln_(80); tyObject_OcctAisHello__XdxJIqQ0m9cy9c9aT1sCM6pjA this_1 = (*this); nimln_(81); { NIM_BOOL T3_ = (*this).myView.IsNull(); if (!!(T3_)) goto LA4_; { nimln_(82); this_1.FlushViewEvents((*this).myContext, (*this).myView, NIM_TRUE); } } LA4_: ; popFrame(); } Run