diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/naming/encodeSignature.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/naming/encodeSignature.kt index c5dd53559d9..21f6f584728 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/naming/encodeSignature.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/naming/encodeSignature.kt @@ -82,14 +82,14 @@ private fun StringBuilder.encodeForSignature( 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("<") - for ((index, argument) in type.arguments.withIndex()) { - if (index > 0) { + for ((argument, parameter) in type.arguments.zip(parameters)) { + if (parameter.index > 0) { append(",") } - encodeForSignature(argument, parameters[index], typeParameterNamer) + encodeForSignature(argument, parameter, typeParameterNamer) } append(">") } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt index 443475e9d1d..b6c2c27d71a 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt @@ -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, b: Int) {}") + } + @Suppress("ObjectLiteralToLambda") private fun assertSignature(expectedEncoding: String, codeSnippet: String, name: String = "test") { val disposable = object : Disposable {