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

Reply via email to