Skip to content

Commit

Permalink
Support vararg parameters (fixes #54)
Browse files Browse the repository at this point in the history
  • Loading branch information
SalomonBrys committed May 2, 2023
1 parent 00b4f62 commit 087f9a0
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,14 @@ public class MocKMPProcessor(
gFun.addAnnotation(it.toAnnotationSpec())
}
vFun.parameters.forEach { vParam ->
gFun.addParameter(vParam.name!!.asString(), vParam.type.toTypeName(typeParamResolver))
gFun.addParameter(vParam.name!!.asString(), vParam.type.toTypeName(typeParamResolver), if (vParam.isVararg) listOf(KModifier.VARARG) else emptyList())
}
val paramsDescription = vFun.parameters.joinToString {
(it.type.resolve().declaration as? KSClassDeclaration)?.qualifiedName?.asString()?.let { str ->
if (it.isVararg) "vararg $str" else str
}
?: "?"
}
val paramsDescription = vFun.parameters.joinToString { (it.type.resolve().declaration as? KSClassDeclaration)?.qualifiedName?.asString() ?: "?" }
val paramsCall = if (vFun.parameters.isEmpty()) "" else vFun.parameters.joinToString { it.name!!.asString() }
val register = if (Modifier.SUSPEND in vFun.modifiers) "registerSuspend" else "register"
val default = if (vFun.isAbstract) "" else "default = { super.${vFun.simpleName.asString()}($paramsCall) }"
Expand Down
2 changes: 1 addition & 1 deletion tests/tests-junit4/src/commonMain/kotlin/foo/Types.kt
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ typealias BarCB = (String) -> Int
interface Bar : Foo<Bar> {
fun doNothing() {}
fun doSomething() { doNothing() }
fun newData(string: String, int: Int): Data
fun newData(string: String, vararg int: Int): Data
fun doData(data: Data)
fun doAll(string: String, int: Int, data: Data)
suspend fun newData(): Data
Expand Down

0 comments on commit 087f9a0

Please sign in to comment.