diff --git a/src/converter/plugins/convertFunctionType.ts b/src/converter/plugins/convertFunctionType.ts index 32eb1989..5d36c5dc 100644 --- a/src/converter/plugins/convertFunctionType.ts +++ b/src/converter/plugins/convertFunctionType.ts @@ -15,15 +15,15 @@ export const convertFunctionType = createSimplePlugin((node, context, render) => return `Function /* ${typeScriptService?.printNode(node)} */` } + const returnType = render(node.type) + if (node.parameters.some(parameter => parameter.dotDotDotToken)) { - return `Function /* ${typeScriptService?.printNode(node)} */` + return `Function<${returnType}> /* ${typeScriptService?.printNode(node)} */` } const parameters = node.parameters ?.map(parameter => render(parameter)) ?.join(", ") - const returnType = render(node.type) - return `(${parameters}) -> ${returnType}` }) diff --git a/test/functional/base/generated/function/vararg.kt b/test/functional/base/generated/function/vararg.kt index e9d20099..93ca7fb4 100644 --- a/test/functional/base/generated/function/vararg.kt +++ b/test/functional/base/generated/function/vararg.kt @@ -13,4 +13,4 @@ external fun simpleVararg(vararg args: String): Unit external fun > genericVararg(vararg args: Any? /* T */): Unit -external fun callbackVararg(fn: Function /* (...args: string[]) => void */): Unit +external fun callbackVararg(fn: Function /* (...args: string[]) => void */): Unit