error message says: (line numbers are not the same as in your code)
    
    
    /usercode/in.nim(21, 8) Warning: use {.base.} for base methods; baseless 
methods are deprecated [UseBase]
    /usercode/in.nim(24, 8) Warning: use {.base.} for base methods; baseless 
methods are deprecated [UseBase]
    /usercode/in.nim(27, 13) Error: type mismatch
    Expression: showContents(manager.myFoo)
      [1] manager.myFoo: Foo
    
    Expected one of (first mismatch at [position]):
    [1] method showContents(b: Bar1)
    [1] method showContents(b: Bar2)
    
    
    Run

So following it I added a base method
    
    
    type
        Foo = ref object of RootObj
            x: string = "I'm Foo"
        
        Bar1 = ref object of Foo
            y: string = "I'm Bar1"
        
        Bar2 = ref object of Foo
            z: string = "I'm Bar2"
        
        FooManager = ref object
            myFoo: Foo
    
    var manager: FooManager = FooManager(
        myFoo: Bar1()
    )
    
    method showContents(b: Foo) =
        echo b.x
    
    method showContents(b: Bar1) =
        echo b.y
    
    method showContents(b: Bar2) =
        echo b.z
    
    showContents(manager.myFoo)
    
    
    Run

works
    
    
    I'm Bar1
    
    
    Run

Reply via email to