'Kotlin: Generic high-order function - Type mismatch

I'm trying to grasp generics in Kotlin.

In the following sample, I'm trying to constrain the type T and use it inside a high-order function, or just functions in general.

interface A {
    fun foo()
}

class bar<T : A> (val g: A, val h: T, val callable: (T) -> Unit ) {
    fun test() {
        // Polymorphism works as expected
        g.foo()
        h.foo()

        // Type mismatch: inferred type is A but T was expected
        callable(g)

        // Fine
        callable(h)
        
        // Type mismatch: inferred type is A but T was expected
        baz(g)

        // Fine
        baz(h)
    }
    
    fun baz(l: T) {}
}

Could you please explain why it doesn't compile?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source