Closed Schahen closed 4 years ago
Following code:
interface Options<A, B> {} interface Result<T> {} declare function generate(options: Options<'pem', 'pem'>): Result<{ publicKey: string, privateKey: string }>; declare function generate(options: Options<'pem', 'der'>): Result<{ publicKey: string, privateKey: Buffer }>; declare function generate(options: Options<'der', 'pem'>): Result<{ publicKey: Buffer, privateKey: string }>; declare function generate(options: Options<'der', 'der'>): Result<{ publicKey: Buffer, privateKey: Buffer }>;
is translated to:
external interface Options<A, B> external interface Result<T> external interface `T$0` { var publicKey: String var privateKey: String } external fun generate(options: Options<String /* 'pem' */, String /* 'pem' */>): Result<`T$0`> external interface `T$1` { var publicKey: String var privateKey: Any } external fun generate(options: Options<String /* 'pem' */, String /* 'der' */>): Result<`T$1`> external interface `T$2` { var publicKey: Any var privateKey: String } external fun generate(options: Options<String /* 'der' */, String /* 'pem' */>): Result<`T$2`> external interface `T$3` { var publicKey: Any var privateKey: Any } external fun generate(options: Options<String /* 'der' */, String /* 'der' */>): Result<`T$3`>
Which compiles only because of @file:Suppress("CONFLICTING_OVERLOADS") We should merge such functions and methods.
@file:Suppress("CONFLICTING_OVERLOADS")
see also https://github.com/Kotlin/dukat/issues/278
Following code:
is translated to:
Which compiles only because of
@file:Suppress("CONFLICTING_OVERLOADS")
We should merge such functions and methods.