From 1e536af87eb41eea459f4cb49f6d961634198728 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 27 Mar 2015 15:53:55 +0100 Subject: [PATCH] correctly calculate the number of mask arguments required for a method with default arguments #KT-6816 Fixed --- .../kotlin/codegen/state/JetTypeMapper.java | 2 +- .../testData/codegen/box/classes/kt6816.kt | 25 +++++++++++++++++++ .../BlackBoxCodegenTestGenerated.java | 6 +++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/box/classes/kt6816.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java index dd0ed8bf2ad..8630b119b03 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java @@ -708,7 +708,7 @@ public class JetTypeMapper { @NotNull public static String getDefaultDescriptor(@NotNull Method method, boolean isExtension) { String descriptor = method.getDescriptor(); - int argumentsCount = (Type.getArgumentsAndReturnSizes(descriptor) >> 2) - 1; + int argumentsCount = Type.getArgumentTypes(descriptor).length; if (isExtension) { argumentsCount--; } diff --git a/compiler/testData/codegen/box/classes/kt6816.kt b/compiler/testData/codegen/box/classes/kt6816.kt new file mode 100644 index 00000000000..ed081c608fb --- /dev/null +++ b/compiler/testData/codegen/box/classes/kt6816.kt @@ -0,0 +1,25 @@ +public class CalculatorConstants( + val id: Long = 0, + val detour: Double = 0.0, + val taxi: Double = 0.0, + val loop: Double = 0.0, + val planeCondition: Double = 0.0, + val co2PerKerosene: Double = 0.0, + val freight: Double = 0.0, + val rfi: Double = 0.0, + val rfiAltitude: Double = 0.0, + val averageContribution: Double = 0.0, + val singleContribution: Double = 0.0, + val returnContribution: Double = 0.0, + val defraFactor: Double = 0.0, + val airCondMult: Double = 0.0, + val autoTransMult: Double = 0.0, + val hybridDefault: String? = null, + val travelClassOne: Double = 0.0, + val status: String = "OK" +) + +fun box(): String { + val c = CalculatorConstants() + return c.status +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java index 34c47ad05df..9ac83449a76 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -1451,6 +1451,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("kt6816.kt") + public void testKt6816() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/kt6816.kt"); + doTest(fileName); + } + @TestMetadata("kt707.kt") public void testKt707() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/kt707.kt");