JS: fix FE crashing when type argument count less than parameter count

See KT-20908
This commit is contained in:
Alexey Andreev
2017-10-23 20:14:08 +03:00
parent a6e98c30d7
commit e488cf13ad
4 changed files with 18 additions and 1 deletions
@@ -0,0 +1,5 @@
inline fun <T, reified K> bar() {}
fun foo() {
bar<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!>()
}
@@ -0,0 +1,4 @@
package
public inline fun </*0*/ T, /*1*/ reified K> bar(): kotlin.Unit
public fun foo(): kotlin.Unit
@@ -434,6 +434,12 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes
doTest(fileName);
}
@TestMetadata("incompleteReifiedArg.kt")
public void testIncompleteReifiedArg() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/module/incompleteReifiedArg.kt");
doTest(fileName);
}
@TestMetadata("jsModuleNonExternal.kt")
public void testJsModuleNonExternal() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/module/jsModuleNonExternal.kt");
@@ -49,7 +49,9 @@ object JsModuleCallChecker : CallChecker {
val containingDescriptor = context.scope.ownerDescriptor
val typeParams = call.candidateDescriptor.typeParameters.map { it.original }.withIndex().filter { (_, param) -> param.isReified }
val typeArguments = call.call.typeArgumentList
?.let { args -> typeParams.associate { (index, param) -> param.original to args.arguments[index].typeReference }}
?.let { args ->
typeParams.associate { (index, param) -> param.original to args.arguments.getOrNull(index)?.typeReference }
}
.orEmpty()
for (typeParam in typeParams.map { (_, param) -> param.original }) {
val argPsi = typeArguments[typeParam] ?: reportOn