Skip to content
This repository was archived by the owner on Nov 6, 2019. It is now read-only.

Commit 4d8d510

Browse files
committed
Specify "overrides" for a generic function when needed
1 parent 16ef64d commit 4d8d510

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

src/main/kotlin/ts2kt/translate.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,11 @@ fun translate(srcPath: String, basePackageName: String, declareModifierIsOptiona
162162
// no need to check the return type. If they are incompatible, It will be a Kotlin compilation error.
163163

164164
for (i in candidate.parameters.indices) {
165-
val candidateType = getTypeOfSymbol(candidate.parameters[i])
166-
val otherType = getTypeOfSymbol(other.parameters[i])
165+
// Convert to a String in order to handle generic types
166+
val candidateTypeString = typeToString(getTypeOfSymbol(candidate.parameters[i]))
167+
val otherTypeString = typeToString(getTypeOfSymbol(other.parameters[i]))
167168

168-
if (candidateType != otherType) return false
169+
if (candidateTypeString != otherTypeString) return false
169170
}
170171

171172
return true

testData/class/inheritance/overrides.d.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ external interface BaseEvent {
66
var data: dynamic /* String | Number */
77
fun getDelegateTarget(): Shape
88
fun getElement(): Element
9+
fun <T : Shape> transform(shape: T? = definedExternally /* null */): T
910
}
1011
external open class BoxStringEvent : BaseEvent {
1112
override var data: String = definedExternally
1213
override fun getDelegateTarget(): Box = definedExternally
1314
override fun getElement(): HTMLElement = definedExternally
15+
override fun <T : Shape> transform(shape: T?): T = definedExternally
1416
}
1517
external interface NumberEvent : BaseEvent {
1618
override var data: Number

testData/class/inheritance/overrides.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ declare interface BaseEvent {
66
data: string | number;
77
getDelegateTarget(): Shape;
88
getElement(): Element;
9+
transform<T extends Shape>(shape?: T): T;
910
}
1011
declare class BoxStringEvent implements BaseEvent {
1112
data: string;
1213
getDelegateTarget(): Box;
1314
getElement(): HTMLElement;
15+
transform<T extends Shape>(shape?: T): T;
1416
}
1517
declare interface NumberEvent extends BaseEvent {
1618
data: number;

0 commit comments

Comments
 (0)