raulraja
08/17/2017, 5:53 PMProtoBuf.Function
I can get a String
representation of the original function as it was declared?
I have this but it's not looking like it get the real names and values as expressed for the function arguments:
data class FunctionSignature(
val typeParams: List<String>,
val name: String,
val args: List<Pair<String, String>>,
val retType: String
) {
override fun toString(): String {
val typeParamsS = typeParams.joinToString(prefix = "<", separator = ", ", postfix = ">")
val argsS = args.map { "${it.first}: ${it.second}" }.joinToString(prefix = "(", separator = ", ", postfix = ")")
return "fun $typeParamsS $name$argsS: $retType"
}
companion object {
fun from(c: ClassOrPackageDataWrapper, f: ProtoBuf.Function): FunctionSignature =
FunctionSignature(
f.typeParameterList.map { c.nameResolver.getString(it.name) },
c.nameResolver.getString(f.name),
f.valueParameterList.map { c.nameResolver.getString(it.name) to c.nameResolver.getString(it.type.className) },
c.nameResolver.getString(f.returnType.className)
)
}
}
It returns in this case fun <A, B> map(fa: kategory/HK, f: kotlin/Function1): kategory/HK
but the original function as declared was fun <A, B> map(fa: HK<F, A>, f: (A) -> B): HK<F, B>
.