From 0688aeb5b3ac7eee5ce6c2cb4c73a05b109eee0a Mon Sep 17 00:00:00 2001 From: Kolchurin Konstantin Date: Fri, 18 Sep 2026 00:32:54 +0700 Subject: [PATCH 1/2] prevent lazy delegate wrapping for long resource keys, new tests --- .../gradle/generator/ResourceTypeGenerator.kt | 2 +- .../generator/ResourceTypeGeneratorTest.kt | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 resources-generator/src/test/kotlin/dev/icerock/gradle/generator/ResourceTypeGeneratorTest.kt diff --git a/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/ResourceTypeGenerator.kt b/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/ResourceTypeGenerator.kt index d5d3ffa9..fa7cf585 100644 --- a/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/ResourceTypeGenerator.kt +++ b/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/ResourceTypeGenerator.kt @@ -315,7 +315,7 @@ internal class ResourceTypeGenerator( .addModifiers(KModifier.INTERNAL) .delegate( CodeBlock.of( - "lazy { %L() }", + "lazy·{ %L() }", initFunctionName(resource.internalName) ) ) diff --git a/resources-generator/src/test/kotlin/dev/icerock/gradle/generator/ResourceTypeGeneratorTest.kt b/resources-generator/src/test/kotlin/dev/icerock/gradle/generator/ResourceTypeGeneratorTest.kt new file mode 100644 index 00000000..af549d56 --- /dev/null +++ b/resources-generator/src/test/kotlin/dev/icerock/gradle/generator/ResourceTypeGeneratorTest.kt @@ -0,0 +1,52 @@ +/* + * Copyright 2026 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +package dev.icerock.gradle.generator + +import com.squareup.kotlinpoet.KModifier +import dev.icerock.gradle.generator.resources.NOPResourceGenerator +import dev.icerock.gradle.generator.resources.string.StringResourceGenerator +import dev.icerock.gradle.metadata.container.ResourceType +import dev.icerock.gradle.metadata.resource.StringMetadata +import org.junit.Test +import kotlin.test.assertNotNull +import kotlin.test.assertTrue + +class ResourceTypeGeneratorTest { + + @Test + fun longResourceNamesKeepLazyLambdaOnTheSameLine() { + val generator = ResourceTypeGenerator( + propertiesGenerationStrategy = FlatPropertiesGenerationStrategy(), + resourceClass = Constants.stringResourceName, + resourceType = ResourceType.STRINGS, + metadataClass = StringMetadata::class, + visibilityModifier = KModifier.PUBLIC, + generator = StringResourceGenerator(strictLineBreaks = false), + platformResourceGenerator = NOPResourceGenerator(), + filter = {}, + resourcesPackageName = "com.example.resources" + ) + + listOf(59, 60, 120).forEach { keyLength -> + val key = "s".repeat(keyLength) + val result = assertNotNull( + generator.generateObject( + parentObjectName = "MR", + resources = listOf( + StringMetadata( + key = key, + values = listOf(StringMetadata.LocaleItem(locale = "base", value = "test")) + ) + ), + sourceSetName = "commonMain" + ) + ) + val generatedFile = result.fileSpecs.single().toString() + val delegateLine = generatedFile.lineSequence().first { "lazy" in it } + + assertTrue("lazy {" in delegateLine, "Key length $keyLength: $delegateLine") + } + } +} From c616fe516f537f7ac91f604900e0df7623f9d3a6 Mon Sep 17 00:00:00 2001 From: Kolchurin Konstantin Date: Fri, 18 Sep 2026 00:33:04 +0700 Subject: [PATCH 2/2] update moko-resources version --- gradle/moko.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/moko.versions.toml b/gradle/moko.versions.toml index b278a38f..c257f921 100644 --- a/gradle/moko.versions.toml +++ b/gradle/moko.versions.toml @@ -1,6 +1,6 @@ [versions] graphicsVersion = "0.10.2" -resourcesVersion = "0.27.0" +resourcesVersion = "0.27.1" [libraries] graphics = { module = "dev.icerock.moko:graphics", version.ref = "graphicsVersion" }