JS: don't fail when generating signature for function which refers to undefined type

This commit is contained in:
Alexey Andreev
2017-01-30 17:49:21 +03:00
parent f4ef98c327
commit d0b7dc8f4e
2 changed files with 11 additions and 5 deletions
@@ -82,14 +82,14 @@ private fun StringBuilder.encodeForSignature(
append(DescriptorUtils.getFqName(declaration).asString()) append(DescriptorUtils.getFqName(declaration).asString())
if (type.arguments.isNotEmpty()) { val parameters = declaration.typeConstructor.parameters
val parameters = declaration.typeConstructor.parameters if (type.arguments.isNotEmpty() && parameters.isNotEmpty()) {
append("<") append("<")
for ((index, argument) in type.arguments.withIndex()) { for ((argument, parameter) in type.arguments.zip(parameters)) {
if (index > 0) { if (parameter.index > 0) {
append(",") append(",")
} }
encodeForSignature(argument, parameters[index], typeParameterNamer) encodeForSignature(argument, parameter, typeParameterNamer)
} }
append(">") append(">")
} }
@@ -184,6 +184,12 @@ class EncodeSignatureTest {
""") """)
} }
@Test
fun missingType() {
assertSignature(",kotlin.Int", "fun test(a: WrongClass, b: Int) {}")
assertSignature(",kotlin.Int", "fun test(a: WrongClass<String>, b: Int) {}")
}
@Suppress("ObjectLiteralToLambda") @Suppress("ObjectLiteralToLambda")
private fun assertSignature(expectedEncoding: String, codeSnippet: String, name: String = "test") { private fun assertSignature(expectedEncoding: String, codeSnippet: String, name: String = "test") {
val disposable = object : Disposable { val disposable = object : Disposable {