Worked through this a bit with them in the real time chat, turns out they were 
using `cast` to convert a different inherited type to their desired type, 
minimal reproduction here: 
    
    
    type
      A = ref object of RootObj
      B = ref object of A
        name: string
      C = ref object of A
        eval: proc()
    
    var val = cast[C](B(name: "Hello"))
    assert val.eval != nil
    val.eval()
    
    
    Run

Reply via email to