diff --git a/src/main/kotlin/ts2kt/translate.kt b/src/main/kotlin/ts2kt/translate.kt index 0b2a741..05a9836 100644 --- a/src/main/kotlin/ts2kt/translate.kt +++ b/src/main/kotlin/ts2kt/translate.kt @@ -162,10 +162,11 @@ fun translate(srcPath: String, basePackageName: String, declareModifierIsOptiona // no need to check the return type. If they are incompatible, It will be a Kotlin compilation error. for (i in candidate.parameters.indices) { - val candidateType = getTypeOfSymbol(candidate.parameters[i]) - val otherType = getTypeOfSymbol(other.parameters[i]) + // Convert to a String in order to handle generic types + val candidateTypeString = typeToString(getTypeOfSymbol(candidate.parameters[i])) + val otherTypeString = typeToString(getTypeOfSymbol(other.parameters[i])) - if (candidateType != otherType) return false + if (candidateTypeString != otherTypeString) return false } return true diff --git a/testData/class/inheritance/overrides.d.kt b/testData/class/inheritance/overrides.d.kt index 22d6e2c..2b185e4 100644 --- a/testData/class/inheritance/overrides.d.kt +++ b/testData/class/inheritance/overrides.d.kt @@ -6,11 +6,13 @@ external interface BaseEvent { var data: dynamic /* String | Number */ fun getDelegateTarget(): Shape fun getElement(): Element + fun transform(shape: T? = definedExternally /* null */): T } external open class BoxStringEvent : BaseEvent { override var data: String = definedExternally override fun getDelegateTarget(): Box = definedExternally override fun getElement(): HTMLElement = definedExternally + override fun transform(shape: T?): T = definedExternally } external interface NumberEvent : BaseEvent { override var data: Number diff --git a/testData/class/inheritance/overrides.d.ts b/testData/class/inheritance/overrides.d.ts index 45fb322..12425f4 100644 --- a/testData/class/inheritance/overrides.d.ts +++ b/testData/class/inheritance/overrides.d.ts @@ -6,11 +6,13 @@ declare interface BaseEvent { data: string | number; getDelegateTarget(): Shape; getElement(): Element; + transform(shape?: T): T; } declare class BoxStringEvent implements BaseEvent { data: string; getDelegateTarget(): Box; getElement(): HTMLElement; + transform(shape?: T): T; } declare interface NumberEvent extends BaseEvent { data: number;