From 4d8d5109219b0857071d1d9b566fa5af1a54c757 Mon Sep 17 00:00:00 2001 From: Eric Pabst Date: Mon, 17 Sep 2018 23:25:18 -0600 Subject: [PATCH] Specify "overrides" for a generic function when needed --- src/main/kotlin/ts2kt/translate.kt | 7 ++++--- testData/class/inheritance/overrides.d.kt | 2 ++ testData/class/inheritance/overrides.d.ts | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) 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;