Kotlin / dukat

Converter of <any kind of declarations> to Kotlin external declarations
552 stars 42 forks source link

Method copied to interface implementation preserving type params #280

Closed Schahen closed 4 years ago

Schahen commented 4 years ago

Following code:

interface StatsBase<T> {
  ping(o: T);
  pong(): T;
  uid: T,
}

interface Stats  extends StatsBase<number> {}
declare class Stats {}

is translated to:

external interface StatsBase<T> {
    fun ping(o: T)
    fun pong(): T
    var uid: T
}

external open class Stats : StatsBase<Number> {
    override fun ping(o: T)
    override fun pong(): T
    override var uid: T
}

While, of course actually we want to have

external open class Stats : StatsBase<Number> {
    override fun ping(o: Number)
    override fun pong(): Number
    override var uid: Number
}