From ad326f7875d94b28f515904ee47dc3588f55e550 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 20 Jul 2018 13:44:33 +0200 Subject: [PATCH] Fix assert on parameter type length for functions with big arity In case of a bridge for a vararg invoke with big arity, the bridge only has one parameter (array of parameters), and the delegate method has at least 23 parameters. This assert was added in 77959247d2 and it didn't cause any tests in master to fail because tests on functions with big arity are disabled there --- .../src/org/jetbrains/kotlin/codegen/ClosureCodegen.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java index 5e4454dcf63..cef8d63d22f 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClosureCodegen.java @@ -297,9 +297,10 @@ public class ClosureCodegen extends MemberCodegen { "Vararg invoke must have one parameter of type [Ljava/lang/Object;: " + bridge; generateVarargInvokeArityAssert(iv, delegate.getArgumentTypes().length); } - - assert bridgeParameterTypes.length == bridgeParameterKotlinTypes.size() : - "Asm parameter types should be the same length as Kotlin parameter types"; + else { + assert bridgeParameterTypes.length == bridgeParameterKotlinTypes.size() : + "Asm parameter types should be the same length as Kotlin parameter types"; + } iv.load(0, asmType);