From 4fbf89cd499139af257c7223ac8d5204ef422126 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Wed, 15 Jan 2020 02:42:52 -0500 Subject: [PATCH] Fix mask count in proguard rule gen (#1075) * Fix mask count in proguard rule generation Signed, Person that always forgets how to do modulo counting * Update tests --- .../com/squareup/moshi/kotlin/codegen/api/ProguardRules.kt | 6 +++++- .../moshi/kotlin/codegen/JsonClassCodegenProcessorTest.kt | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/api/ProguardRules.kt b/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/api/ProguardRules.kt index bde3eaa..7b797f0 100644 --- a/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/api/ProguardRules.kt +++ b/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/api/ProguardRules.kt @@ -85,7 +85,11 @@ internal data class ProguardConfig( appendln("-if class $targetName") appendln("-keepclassmembers class ${targetClass.canonicalName} {") val allParams = targetConstructorParams.toMutableList() - val maskCount = (targetConstructorParams.size % 32) + 1 + val maskCount = if (targetConstructorParams.isEmpty()) { + 0 + } else { + (targetConstructorParams.size + 31) / 32 + } repeat(maskCount) { allParams += "int" } diff --git a/kotlin/codegen/src/test/java/com/squareup/moshi/kotlin/codegen/JsonClassCodegenProcessorTest.kt b/kotlin/codegen/src/test/java/com/squareup/moshi/kotlin/codegen/JsonClassCodegenProcessorTest.kt index 0de2fea..ee0c9ca 100644 --- a/kotlin/codegen/src/test/java/com/squareup/moshi/kotlin/codegen/JsonClassCodegenProcessorTest.kt +++ b/kotlin/codegen/src/test/java/com/squareup/moshi/kotlin/codegen/JsonClassCodegenProcessorTest.kt @@ -565,7 +565,7 @@ class JsonClassCodegenProcessorTest { -keepnames class kotlin.jvm.internal.DefaultConstructorMarker -if class testPackage.DefaultParams -keepclassmembers class testPackage.DefaultParams { - public synthetic (java.lang.String,int,int,kotlin.jvm.internal.DefaultConstructorMarker); + public synthetic (java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker); } """.trimIndent()) @@ -583,7 +583,7 @@ class JsonClassCodegenProcessorTest { -keepnames class kotlin.jvm.internal.DefaultConstructorMarker -if class testPackage.Complex -keepclassmembers class testPackage.Complex { - public synthetic (java.lang.String,java.util.List,java.lang.Object,int,int,int,int,kotlin.jvm.internal.DefaultConstructorMarker); + public synthetic (java.lang.String,java.util.List,java.lang.Object,int,kotlin.jvm.internal.DefaultConstructorMarker); } """.trimIndent())