Browse Source

Generate functions to find resources by a string ID. (#5068)

The PR adds a generation special properties with maps a string ID to the
resource for each type of resources:
```kotlin
val Res.allDrawableResources: Map<String, DrawableResource>
val Res.allStringResources: Map<String, StringResource>
val Res.allStringArrayResources: Map<String, StringArrayResource>
val Res.allPluralStringResources: Map<String, PluralStringResource>
val Res.allFontResources: Map<String, FontResource>
```

<!-- Optional -->
Fixes https://github.com/JetBrains/compose-multiplatform/issues/4880
Fixes https://youtrack.jetbrains.com/issue/CMP-1607

## Testing
I checked it in the sample project but this should be tested by QA (KMP
and JVM only projects)

## Release Notes
### Features - Resources
- Now the gradle plugin generates resources map to find a resource by a
string ID
pull/5091/head
Konstantin 2 months ago committed by GitHub
parent
commit
e4c77036db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 136
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/ComposeResourcesGeneration.kt
  2. 116
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/GenerateResourceCollectorsTask.kt
  3. 108
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/GeneratedResClassSpec.kt
  4. 4
      gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt
  5. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceAccessors/my/lib/res/String0.androidMain.kt
  6. 53
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceCollectors/my/lib/res/ActualResourceCollectors.kt
  7. 12
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Drawable0.commonMain.kt
  8. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Font0.commonMain.kt
  9. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Plurals0.commonMain.kt
  10. 15
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/String0.commonMain.kt
  11. 25
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceCollectors/my/lib/res/ExpectResourceCollectors.kt
  12. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceAccessors/my/lib/res/String0.desktopMain.kt
  13. 53
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceCollectors/my/lib/res/ActualResourceCollectors.kt
  14. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceAccessors/app/group/resources_test/generated/resources/String0.androidMain.kt
  15. 53
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceCollectors/app/group/resources_test/generated/resources/ActualResourceCollectors.kt
  16. 12
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Drawable0.commonMain.kt
  17. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Font0.commonMain.kt
  18. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Plurals0.commonMain.kt
  19. 15
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/String0.commonMain.kt
  20. 25
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceCollectors/app/group/resources_test/generated/resources/ExpectResourceCollectors.kt
  21. 8
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceAccessors/app/group/resources_test/generated/resources/String0.desktopMain.kt
  22. 53
      gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceCollectors/app/group/resources_test/generated/resources/ActualResourceCollectors.kt
  23. 49
      gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/Res.kt
  24. 25
      gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/commonMainResourceCollectors/app/group/empty_res/generated/resources/ExpectResourceCollectors.kt
  25. 49
      gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/commonResClass/app/group/empty_res/generated/resources/Res.kt
  26. 48
      gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/desktopMainResourceCollectors/app/group/empty_res/generated/resources/ActualResourceCollectors.kt
  27. 8
      gradle-plugins/compose/src/test/test-projects/misc/jvmOnlyResources/expected/mainResourceAccessors/me/app/jvmonlyresources/generated/resources/Drawable0.main.kt
  28. 49
      gradle-plugins/compose/src/test/test-projects/misc/jvmOnlyResources/expected/mainResourceCollectors/me/app/jvmonlyresources/generated/resources/ActualResourceCollectors.kt

136
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/ComposeResourcesGeneration.kt

@ -6,8 +6,14 @@ import org.jetbrains.compose.ComposePlugin
import org.jetbrains.compose.internal.IDEA_IMPORT_TASK_NAME
import org.jetbrains.compose.internal.IdeaImportTask
import org.jetbrains.compose.internal.utils.uppercaseFirstChar
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
import org.jetbrains.kotlin.tooling.core.withClosure
import java.io.File
internal fun Project.configureComposeResourcesGeneration(
@ -67,6 +73,8 @@ internal fun Project.configureComposeResourcesGeneration(
)
}
configureResourceCollectorsGeneration(kotlinExtension, shouldGenerateCode, packageName, makeAccessorsPublic)
//setup task execution during IDE import
tasks.configureEach { importTask ->
if (importTask.name == IDEA_IMPORT_TASK_NAME) {
@ -115,7 +123,7 @@ private fun Project.configureResourceAccessorsGeneration(
logger.info("Configure resource accessors generation for ${sourceSet.name}")
val genTask = tasks.register(
"generateResourceAccessorsFor${sourceSet.name.uppercaseFirstChar()}",
sourceSet.getResourceAccessorsGenerationTaskName(),
GenerateResourceAccessorsTask::class.java
) { task ->
task.packageName.set(packageName)
@ -133,3 +141,129 @@ private fun Project.configureResourceAccessorsGeneration(
//register generated source set
sourceSet.kotlin.srcDir(genTask.map { it.codeDir })
}
private fun KotlinSourceSet.getResourceAccessorsGenerationTaskName(): String {
return "generateResourceAccessorsFor${this.name.uppercaseFirstChar()}"
}
//we have to generate actual resource collector functions for each leaf source set
private fun Project.configureResourceCollectorsGeneration(
kotlinExtension: KotlinProjectExtension,
shouldGenerateCode: Provider<Boolean>,
packageName: Provider<String>,
makeAccessorsPublic: Provider<Boolean>
) {
if (kotlinExtension is KotlinMultiplatformExtension) {
kotlinExtension.sourceSets
.matching { it.name == KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME }
.all { commonMainSourceSet ->
configureExpectResourceCollectorsGeneration(
commonMainSourceSet,
shouldGenerateCode,
packageName,
makeAccessorsPublic
)
}
kotlinExtension.targets.all { target ->
if (target is KotlinAndroidTarget) {
kotlinExtension.sourceSets.matching { it.name == "androidMain" }.all { androidMain ->
configureActualResourceCollectorsGeneration(
androidMain,
shouldGenerateCode,
packageName,
makeAccessorsPublic,
true
)
}
} else if (target !is KotlinMetadataTarget) {
target.compilations.matching { it.name == KotlinCompilation.MAIN_COMPILATION_NAME }.all { compilation ->
configureActualResourceCollectorsGeneration(
compilation.defaultSourceSet,
shouldGenerateCode,
packageName,
makeAccessorsPublic,
true
)
}
}
}
} else if (kotlinExtension is KotlinSingleTargetExtension<*>) {
//JVM only projects
kotlinExtension.target.compilations
.findByName(KotlinCompilation.MAIN_COMPILATION_NAME)
?.let { compilation ->
configureActualResourceCollectorsGeneration(
compilation.defaultSourceSet,
shouldGenerateCode,
packageName,
makeAccessorsPublic,
false
)
}
}
}
private fun Project.configureExpectResourceCollectorsGeneration(
sourceSet: KotlinSourceSet,
shouldGenerateCode: Provider<Boolean>,
packageName: Provider<String>,
makeAccessorsPublic: Provider<Boolean>
) {
logger.info("Configure expect resource collectors generation for ${sourceSet.name}")
val genTask = tasks.register(
"generateExpectResourceCollectorsFor${sourceSet.name.uppercaseFirstChar()}",
GenerateExpectResourceCollectorsTask::class.java
) { task ->
task.packageName.set(packageName)
task.shouldGenerateCode.set(shouldGenerateCode)
task.makeAccessorsPublic.set(makeAccessorsPublic)
task.codeDir.set(layout.buildDirectory.dir("$RES_GEN_DIR/kotlin/${sourceSet.name}ResourceCollectors"))
}
//register generated source set
sourceSet.kotlin.srcDir(genTask.map { it.codeDir })
}
private fun Project.configureActualResourceCollectorsGeneration(
sourceSet: KotlinSourceSet,
shouldGenerateCode: Provider<Boolean>,
packageName: Provider<String>,
makeAccessorsPublic: Provider<Boolean>,
useActualModifier: Boolean
) {
val taskName = "generateActualResourceCollectorsFor${sourceSet.name.uppercaseFirstChar()}"
if (tasks.names.contains(taskName)) {
logger.info("Actual resource collectors generation for ${sourceSet.name} is already configured")
return
}
logger.info("Configure actual resource collectors generation for ${sourceSet.name}")
val accessorDirs = project.files({
val allSourceSets = sourceSet.withClosure { it.dependsOn }
allSourceSets.mapNotNull { item ->
val accessorsTaskName = item.getResourceAccessorsGenerationTaskName()
if (tasks.names.contains(accessorsTaskName)) {
tasks.named(accessorsTaskName, GenerateResourceAccessorsTask::class.java).map { it.codeDir }
} else null
}
})
val genTask = tasks.register(
taskName,
GenerateActualResourceCollectorsTask::class.java
) { task ->
task.packageName.set(packageName)
task.shouldGenerateCode.set(shouldGenerateCode)
task.makeAccessorsPublic.set(makeAccessorsPublic)
task.useActualModifier.set(useActualModifier)
task.resourceAccessorDirs.from(accessorDirs)
task.codeDir.set(layout.buildDirectory.dir("$RES_GEN_DIR/kotlin/${sourceSet.name}ResourceCollectors"))
}
//register generated source set
sourceSet.kotlin.srcDir(genTask.map { it.codeDir })
}

116
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/GenerateResourceCollectorsTask.kt

@ -0,0 +1,116 @@
package org.jetbrains.compose.resources
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.jetbrains.compose.internal.IdeaImportTask
import org.jetbrains.compose.internal.utils.uppercaseFirstChar
internal abstract class GenerateExpectResourceCollectorsTask : IdeaImportTask() {
@get:Input
abstract val packageName: Property<String>
@get:Input
abstract val shouldGenerateCode: Property<Boolean>
@get:Input
abstract val makeAccessorsPublic: Property<Boolean>
@get:OutputDirectory
abstract val codeDir: DirectoryProperty
override fun safeAction() {
val kotlinDir = codeDir.get().asFile
logger.info("Clean directory $kotlinDir")
kotlinDir.deleteRecursively()
kotlinDir.mkdirs()
if (shouldGenerateCode.get()) {
logger.info("Generate expect ResourceCollectors for $kotlinDir")
val pkgName = packageName.get()
val isPublic = makeAccessorsPublic.get()
val spec = getExpectResourceCollectorsFileSpec(pkgName, "ExpectResourceCollectors", isPublic)
spec.writeTo(kotlinDir)
}
}
}
internal abstract class GenerateActualResourceCollectorsTask : IdeaImportTask() {
@get:Input
abstract val packageName: Property<String>
@get:Input
abstract val shouldGenerateCode: Property<Boolean>
@get:Input
abstract val makeAccessorsPublic: Property<Boolean>
@get:Input
abstract val useActualModifier: Property<Boolean>
@get:InputFiles
@get:PathSensitive(PathSensitivity.RELATIVE)
abstract val resourceAccessorDirs: ConfigurableFileCollection
@get:OutputDirectory
abstract val codeDir: DirectoryProperty
override fun safeAction() {
val kotlinDir = codeDir.get().asFile
val inputDirs = resourceAccessorDirs.files
logger.info("Clean directory $kotlinDir")
kotlinDir.deleteRecursively()
kotlinDir.mkdirs()
val inputFiles = inputDirs.flatMap { dir ->
dir.walkTopDown().filter { !it.isHidden && it.isFile && it.extension == "kt" }.toList()
}
if (shouldGenerateCode.get()) {
logger.info("Generate actual ResourceCollectors for $kotlinDir")
val funNames = inputFiles.mapNotNull { inputFile ->
if (inputFile.nameWithoutExtension.contains('.')) {
val (fileName, suffix) = inputFile.nameWithoutExtension.split('.')
val type = ResourceType.values().firstOrNull { fileName.startsWith(it.accessorName, true) }
val name = "_collect${suffix.uppercaseFirstChar()}${fileName}Resources"
if (type == null) {
logger.warn("Unknown resources type: `$inputFile`")
null
} else if (!inputFile.readText().contains(name)) {
logger.warn("A function '$name' is not found in the `$inputFile` file!")
null
} else {
logger.info("Found collector function: `$name`")
type to name
}
} else {
logger.warn("Unknown file name: `$inputFile`")
null
}
}.groupBy({ it.first }, { it.second })
val pkgName = packageName.get()
val isPublic = makeAccessorsPublic.get()
val useActual = useActualModifier.get()
val spec = getActualResourceCollectorsFileSpec(
pkgName,
"ActualResourceCollectors",
isPublic,
useActual,
funNames
)
spec.writeTo(kotlinDir)
} else {
logger.info("Generation ResourceCollectors for $kotlinDir is disabled")
}
}
}

108
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/GeneratedResClassSpec.kt

@ -1,6 +1,19 @@
package org.jetbrains.compose.resources
import com.squareup.kotlinpoet.*
import com.squareup.kotlinpoet.AnnotationSpec
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.CodeBlock
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.KModifier
import com.squareup.kotlinpoet.MAP
import com.squareup.kotlinpoet.MUTABLE_MAP
import com.squareup.kotlinpoet.MemberName
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.TypeSpec
import com.squareup.kotlinpoet.asClassName
import com.squareup.kotlinpoet.withIndent
import org.jetbrains.compose.internal.utils.uppercaseFirstChar
import java.nio.file.Path
import java.util.*
@ -45,6 +58,9 @@ private val resourceItemClass = ClassName("org.jetbrains.compose.resources", "Re
private val experimentalAnnotation = AnnotationSpec.builder(
ClassName("org.jetbrains.compose.resources", "ExperimentalResourceApi")
).build()
private val internalAnnotation = AnnotationSpec.builder(
ClassName("org.jetbrains.compose.resources", "InternalResourceApi")
).build()
private fun CodeBlock.Builder.addQualifiers(resourceItem: ResourceItem): CodeBlock.Builder {
val languageQualifier = ClassName("org.jetbrains.compose.resources", "LanguageQualifier")
@ -247,6 +263,23 @@ private fun getChunkFileSpec(
}.build()
chunkFile.addType(objectSpec)
//__collect${chunkClassName}Resources function
chunkFile.addFunction(
FunSpec.builder("_collect${chunkClassName}Resources")
.addAnnotation(internalAnnotation)
.addModifiers(KModifier.INTERNAL)
.addParameter(
"map",
MUTABLE_MAP.parameterizedBy(String::class.asClassName(), type.getClassName())
)
.also { collectFun ->
idToResources.keys.forEach { resName ->
collectFun.addStatement("map.put(%S, $chunkClassName.%N)", resName, resName)
}
}
.build()
)
idToResources.forEach { (resName, items) ->
val accessor = PropertySpec.builder(resName, type.getClassName(), resModifier)
.receiver(ClassName(packageName, "Res", type.accessorName))
@ -285,6 +318,79 @@ private fun getChunkFileSpec(
}.build()
}
internal fun getExpectResourceCollectorsFileSpec(
packageName: String,
fileName: String,
isPublic: Boolean
): FileSpec {
val resModifier = if (isPublic) KModifier.PUBLIC else KModifier.INTERNAL
return FileSpec.builder(packageName, fileName).also { file ->
ResourceType.values().forEach { type ->
val typeClassName = type.getClassName()
file.addProperty(
PropertySpec
.builder(
"all${typeClassName.simpleName}s",
MAP.parameterizedBy(String::class.asClassName(), typeClassName),
KModifier.EXPECT,
resModifier
)
.addAnnotation(experimentalAnnotation)
.receiver(ClassName(packageName, "Res"))
.build()
)
}
}.build()
}
internal fun getActualResourceCollectorsFileSpec(
packageName: String,
fileName: String,
isPublic: Boolean,
useActualModifier: Boolean, //e.g. java only project doesn't need actual modifiers
typeToCollectorFunctions: Map<ResourceType, List<String>>
): FileSpec = FileSpec.builder(packageName, fileName).also { file ->
val resModifier = if (isPublic) KModifier.PUBLIC else KModifier.INTERNAL
file.addAnnotation(
AnnotationSpec.builder(ClassName("kotlin", "OptIn"))
.addMember("org.jetbrains.compose.resources.InternalResourceApi::class")
.build()
)
ResourceType.values().forEach { type ->
val typeClassName = type.getClassName()
val initBlock = CodeBlock.builder()
.addStatement("lazy {").withIndent {
addStatement("val map = mutableMapOf<String, %T>()", typeClassName)
typeToCollectorFunctions.get(type).orEmpty().forEach { item ->
addStatement("%N(map)", item)
}
addStatement("return@lazy map")
}
.addStatement("}")
.build()
val mods = if (useActualModifier) {
listOf(KModifier.ACTUAL, resModifier)
} else {
listOf(resModifier)
}
val property = PropertySpec
.builder(
"all${typeClassName.simpleName}s",
MAP.parameterizedBy(String::class.asClassName(), typeClassName),
mods
)
.addAnnotation(experimentalAnnotation)
.receiver(ClassName(packageName, "Res"))
.delegate(initBlock)
.build()
file.addProperty(property)
}
}.build()
private fun sortResources(
resources: Map<ResourceType, Map<String, List<ResourceItem>>>
): TreeMap<ResourceType, TreeMap<String, List<ResourceItem>>> {

4
gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt

@ -513,9 +513,9 @@ class ResourcesTest : GradlePluginTestBase() {
@Test
fun testEmptyResClass(): Unit = with(testProject("misc/emptyResources")) {
gradle("generateComposeResClass").checks {
gradle("prepareKotlinIdeaImport").checks {
assertDirectoriesContentEquals(
file("build/generated/compose/resourceGenerator/kotlin/commonResClass/app/group/empty_res/generated/resources"),
file("build/generated/compose/resourceGenerator/kotlin"),
file("expected")
)
}

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceAccessors/my/lib/res/String0.androidMain.kt

@ -3,6 +3,9 @@
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.StringResource
private object AndroidMainString0 {
@ -10,6 +13,11 @@ private object AndroidMainString0 {
lazy { init_android_str() }
}
@InternalResourceApi
internal fun _collectAndroidMainString0Resources(map: MutableMap<String, StringResource>) {
map.put("android_str", AndroidMainString0.android_str)
}
public val Res.string.android_str: StringResource
get() = AndroidMainString0.android_str

53
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceCollectors/my/lib/res/ActualResourceCollectors.kt

@ -0,0 +1,53 @@
@file:OptIn(org.jetbrains.compose.resources.InternalResourceApi::class)
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
public actual val Res.allDrawableResources: Map<String, DrawableResource> by lazy {
val map = mutableMapOf<String, DrawableResource>()
_collectCommonMainDrawable0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allStringResources: Map<String, StringResource> by lazy {
val map = mutableMapOf<String, StringResource>()
_collectAndroidMainString0Resources(map)
_collectCommonMainString0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allStringArrayResources: Map<String, StringArrayResource> by lazy {
val map = mutableMapOf<String, StringArrayResource>()
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allPluralStringResources: Map<String, PluralStringResource> by lazy {
val map = mutableMapOf<String, PluralStringResource>()
_collectCommonMainPlurals0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allFontResources: Map<String, FontResource> by lazy {
val map = mutableMapOf<String, FontResource>()
_collectCommonMainFont0Resources(map)
return@lazy map
}

12
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Drawable0.commonMain.kt

@ -3,7 +3,10 @@
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.InternalResourceApi
private object CommonMainDrawable0 {
public val _3_strange_name: DrawableResource by
@ -22,6 +25,15 @@ private object CommonMainDrawable0 {
lazy { init_vector_2() }
}
@InternalResourceApi
internal fun _collectCommonMainDrawable0Resources(map: MutableMap<String, DrawableResource>) {
map.put("_3_strange_name", CommonMainDrawable0._3_strange_name)
map.put("camelCaseName", CommonMainDrawable0.camelCaseName)
map.put("is", CommonMainDrawable0.`is`)
map.put("vector", CommonMainDrawable0.vector)
map.put("vector_2", CommonMainDrawable0.vector_2)
}
public val Res.drawable._3_strange_name: DrawableResource
get() = CommonMainDrawable0._3_strange_name

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Font0.commonMain.kt

@ -3,13 +3,21 @@
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.InternalResourceApi
private object CommonMainFont0 {
public val emptyFont: FontResource by
lazy { init_emptyFont() }
}
@InternalResourceApi
internal fun _collectCommonMainFont0Resources(map: MutableMap<String, FontResource>) {
map.put("emptyFont", CommonMainFont0.emptyFont)
}
public val Res.font.emptyFont: FontResource
get() = CommonMainFont0.emptyFont

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Plurals0.commonMain.kt

@ -3,6 +3,9 @@
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.PluralStringResource
private object CommonMainPlurals0 {
@ -10,6 +13,11 @@ private object CommonMainPlurals0 {
lazy { init_numberOfSongsAvailable() }
}
@InternalResourceApi
internal fun _collectCommonMainPlurals0Resources(map: MutableMap<String, PluralStringResource>) {
map.put("numberOfSongsAvailable", CommonMainPlurals0.numberOfSongsAvailable)
}
public val Res.plurals.numberOfSongsAvailable: PluralStringResource
get() = CommonMainPlurals0.numberOfSongsAvailable

15
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/String0.commonMain.kt

@ -3,6 +3,9 @@
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.StringResource
private object CommonMainString0 {
@ -31,6 +34,18 @@ private object CommonMainString0 {
lazy { init_str_template() }
}
@InternalResourceApi
internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>) {
map.put("PascalCase", CommonMainString0.PascalCase)
map.put("_1_kebab_case", CommonMainString0._1_kebab_case)
map.put("app_name", CommonMainString0.app_name)
map.put("camelCase", CommonMainString0.camelCase)
map.put("hello", CommonMainString0.hello)
map.put("info_using_release_${'$'}x", CommonMainString0.`info_using_release_$x`)
map.put("multi_line", CommonMainString0.multi_line)
map.put("str_template", CommonMainString0.str_template)
}
public val Res.string.PascalCase: StringResource
get() = CommonMainString0.PascalCase

25
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceCollectors/my/lib/res/ExpectResourceCollectors.kt

@ -0,0 +1,25 @@
package my.lib.res
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
public expect val Res.allDrawableResources: Map<String, DrawableResource>
@ExperimentalResourceApi
public expect val Res.allStringResources: Map<String, StringResource>
@ExperimentalResourceApi
public expect val Res.allStringArrayResources: Map<String, StringArrayResource>
@ExperimentalResourceApi
public expect val Res.allPluralStringResources: Map<String, PluralStringResource>
@ExperimentalResourceApi
public expect val Res.allFontResources: Map<String, FontResource>

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceAccessors/my/lib/res/String0.desktopMain.kt

@ -3,6 +3,9 @@
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.StringResource
private object DesktopMainString0 {
@ -10,6 +13,11 @@ private object DesktopMainString0 {
lazy { init_desktop_str() }
}
@InternalResourceApi
internal fun _collectDesktopMainString0Resources(map: MutableMap<String, StringResource>) {
map.put("desktop_str", DesktopMainString0.desktop_str)
}
public val Res.string.desktop_str: StringResource
get() = DesktopMainString0.desktop_str

53
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceCollectors/my/lib/res/ActualResourceCollectors.kt

@ -0,0 +1,53 @@
@file:OptIn(org.jetbrains.compose.resources.InternalResourceApi::class)
package my.lib.res
import kotlin.OptIn
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
public actual val Res.allDrawableResources: Map<String, DrawableResource> by lazy {
val map = mutableMapOf<String, DrawableResource>()
_collectCommonMainDrawable0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allStringResources: Map<String, StringResource> by lazy {
val map = mutableMapOf<String, StringResource>()
_collectDesktopMainString0Resources(map)
_collectCommonMainString0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allStringArrayResources: Map<String, StringArrayResource> by lazy {
val map = mutableMapOf<String, StringArrayResource>()
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allPluralStringResources: Map<String, PluralStringResource> by lazy {
val map = mutableMapOf<String, PluralStringResource>()
_collectCommonMainPlurals0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
public actual val Res.allFontResources: Map<String, FontResource> by lazy {
val map = mutableMapOf<String, FontResource>()
_collectCommonMainFont0Resources(map)
return@lazy map
}

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceAccessors/app/group/resources_test/generated/resources/String0.androidMain.kt

@ -3,6 +3,9 @@
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.StringResource
private object AndroidMainString0 {
@ -10,6 +13,11 @@ private object AndroidMainString0 {
lazy { init_android_str() }
}
@InternalResourceApi
internal fun _collectAndroidMainString0Resources(map: MutableMap<String, StringResource>) {
map.put("android_str", AndroidMainString0.android_str)
}
internal val Res.string.android_str: StringResource
get() = AndroidMainString0.android_str

53
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceCollectors/app/group/resources_test/generated/resources/ActualResourceCollectors.kt

@ -0,0 +1,53 @@
@file:OptIn(org.jetbrains.compose.resources.InternalResourceApi::class)
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
internal actual val Res.allDrawableResources: Map<String, DrawableResource> by lazy {
val map = mutableMapOf<String, DrawableResource>()
_collectCommonMainDrawable0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allStringResources: Map<String, StringResource> by lazy {
val map = mutableMapOf<String, StringResource>()
_collectAndroidMainString0Resources(map)
_collectCommonMainString0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allStringArrayResources: Map<String, StringArrayResource> by lazy {
val map = mutableMapOf<String, StringArrayResource>()
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allPluralStringResources: Map<String, PluralStringResource> by lazy {
val map = mutableMapOf<String, PluralStringResource>()
_collectCommonMainPlurals0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allFontResources: Map<String, FontResource> by lazy {
val map = mutableMapOf<String, FontResource>()
_collectCommonMainFont0Resources(map)
return@lazy map
}

12
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Drawable0.commonMain.kt

@ -3,7 +3,10 @@
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.InternalResourceApi
private object CommonMainDrawable0 {
public val _3_strange_name: DrawableResource by
@ -22,6 +25,15 @@ private object CommonMainDrawable0 {
lazy { init_vector_2() }
}
@InternalResourceApi
internal fun _collectCommonMainDrawable0Resources(map: MutableMap<String, DrawableResource>) {
map.put("_3_strange_name", CommonMainDrawable0._3_strange_name)
map.put("camelCaseName", CommonMainDrawable0.camelCaseName)
map.put("is", CommonMainDrawable0.`is`)
map.put("vector", CommonMainDrawable0.vector)
map.put("vector_2", CommonMainDrawable0.vector_2)
}
internal val Res.drawable._3_strange_name: DrawableResource
get() = CommonMainDrawable0._3_strange_name

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Font0.commonMain.kt

@ -3,13 +3,21 @@
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.InternalResourceApi
private object CommonMainFont0 {
public val emptyFont: FontResource by
lazy { init_emptyFont() }
}
@InternalResourceApi
internal fun _collectCommonMainFont0Resources(map: MutableMap<String, FontResource>) {
map.put("emptyFont", CommonMainFont0.emptyFont)
}
internal val Res.font.emptyFont: FontResource
get() = CommonMainFont0.emptyFont

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Plurals0.commonMain.kt

@ -3,6 +3,9 @@
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.PluralStringResource
private object CommonMainPlurals0 {
@ -10,6 +13,11 @@ private object CommonMainPlurals0 {
lazy { init_numberOfSongsAvailable() }
}
@InternalResourceApi
internal fun _collectCommonMainPlurals0Resources(map: MutableMap<String, PluralStringResource>) {
map.put("numberOfSongsAvailable", CommonMainPlurals0.numberOfSongsAvailable)
}
internal val Res.plurals.numberOfSongsAvailable: PluralStringResource
get() = CommonMainPlurals0.numberOfSongsAvailable

15
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/String0.commonMain.kt

@ -3,6 +3,9 @@
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.StringResource
private object CommonMainString0 {
@ -31,6 +34,18 @@ private object CommonMainString0 {
lazy { init_str_template() }
}
@InternalResourceApi
internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>) {
map.put("PascalCase", CommonMainString0.PascalCase)
map.put("_1_kebab_case", CommonMainString0._1_kebab_case)
map.put("app_name", CommonMainString0.app_name)
map.put("camelCase", CommonMainString0.camelCase)
map.put("hello", CommonMainString0.hello)
map.put("info_using_release_${'$'}x", CommonMainString0.`info_using_release_$x`)
map.put("multi_line", CommonMainString0.multi_line)
map.put("str_template", CommonMainString0.str_template)
}
internal val Res.string.PascalCase: StringResource
get() = CommonMainString0.PascalCase

25
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceCollectors/app/group/resources_test/generated/resources/ExpectResourceCollectors.kt

@ -0,0 +1,25 @@
package app.group.resources_test.generated.resources
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
internal expect val Res.allDrawableResources: Map<String, DrawableResource>
@ExperimentalResourceApi
internal expect val Res.allStringResources: Map<String, StringResource>
@ExperimentalResourceApi
internal expect val Res.allStringArrayResources: Map<String, StringArrayResource>
@ExperimentalResourceApi
internal expect val Res.allPluralStringResources: Map<String, PluralStringResource>
@ExperimentalResourceApi
internal expect val Res.allFontResources: Map<String, FontResource>

8
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceAccessors/app/group/resources_test/generated/resources/String0.desktopMain.kt

@ -3,6 +3,9 @@
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.InternalResourceApi
import org.jetbrains.compose.resources.StringResource
private object DesktopMainString0 {
@ -10,6 +13,11 @@ private object DesktopMainString0 {
lazy { init_desktop_str() }
}
@InternalResourceApi
internal fun _collectDesktopMainString0Resources(map: MutableMap<String, StringResource>) {
map.put("desktop_str", DesktopMainString0.desktop_str)
}
internal val Res.string.desktop_str: StringResource
get() = DesktopMainString0.desktop_str

53
gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceCollectors/app/group/resources_test/generated/resources/ActualResourceCollectors.kt

@ -0,0 +1,53 @@
@file:OptIn(org.jetbrains.compose.resources.InternalResourceApi::class)
package app.group.resources_test.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
internal actual val Res.allDrawableResources: Map<String, DrawableResource> by lazy {
val map = mutableMapOf<String, DrawableResource>()
_collectCommonMainDrawable0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allStringResources: Map<String, StringResource> by lazy {
val map = mutableMapOf<String, StringResource>()
_collectDesktopMainString0Resources(map)
_collectCommonMainString0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allStringArrayResources: Map<String, StringArrayResource> by lazy {
val map = mutableMapOf<String, StringArrayResource>()
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allPluralStringResources: Map<String, PluralStringResource> by lazy {
val map = mutableMapOf<String, PluralStringResource>()
_collectCommonMainPlurals0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allFontResources: Map<String, FontResource> by lazy {
val map = mutableMapOf<String, FontResource>()
_collectCommonMainFont0Resources(map)
return@lazy map
}

49
gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/Res.kt

@ -1,49 +0,0 @@
@file:OptIn(
org.jetbrains.compose.resources.InternalResourceApi::class,
org.jetbrains.compose.resources.ExperimentalResourceApi::class,
)
package app.group.empty_res.generated.resources
import kotlin.ByteArray
import kotlin.OptIn
import kotlin.String
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.getResourceUri
import org.jetbrains.compose.resources.readResourceBytes
internal object Res {
/**
* Reads the content of the resource file at the specified path and returns it as a byte array.
*
* Example: `val bytes = Res.readBytes("files/key.bin")`
*
* @param path The path of the file to read in the compose resource's directory.
* @return The content of the file as a byte array.
*/
@ExperimentalResourceApi
public suspend fun readBytes(path: String): ByteArray =
readResourceBytes("composeResources/app.group.empty_res.generated.resources/" + path)
/**
* Returns the URI string of the resource file at the specified path.
*
* Example: `val uri = Res.getUri("files/key.bin")`
*
* @param path The path of the file in the compose resource's directory.
* @return The URI string of the file.
*/
@ExperimentalResourceApi
public fun getUri(path: String): String =
getResourceUri("composeResources/app.group.empty_res.generated.resources/" + path)
public object drawable
public object string
public object array
public object plurals
public object font
}

25
gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/commonMainResourceCollectors/app/group/empty_res/generated/resources/ExpectResourceCollectors.kt

@ -0,0 +1,25 @@
package app.group.empty_res.generated.resources
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
internal expect val Res.allDrawableResources: Map<String, DrawableResource>
@ExperimentalResourceApi
internal expect val Res.allStringResources: Map<String, StringResource>
@ExperimentalResourceApi
internal expect val Res.allStringArrayResources: Map<String, StringArrayResource>
@ExperimentalResourceApi
internal expect val Res.allPluralStringResources: Map<String, PluralStringResource>
@ExperimentalResourceApi
internal expect val Res.allFontResources: Map<String, FontResource>

49
gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/commonResClass/app/group/empty_res/generated/resources/Res.kt

@ -0,0 +1,49 @@
@file:OptIn(
org.jetbrains.compose.resources.InternalResourceApi::class,
org.jetbrains.compose.resources.ExperimentalResourceApi::class,
)
package app.group.empty_res.generated.resources
import kotlin.ByteArray
import kotlin.OptIn
import kotlin.String
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.getResourceUri
import org.jetbrains.compose.resources.readResourceBytes
internal object Res {
/**
* Reads the content of the resource file at the specified path and returns it as a byte array.
*
* Example: `val bytes = Res.readBytes("files/key.bin")`
*
* @param path The path of the file to read in the compose resource's directory.
* @return The content of the file as a byte array.
*/
@ExperimentalResourceApi
public suspend fun readBytes(path: String): ByteArray =
readResourceBytes("composeResources/app.group.empty_res.generated.resources/" + path)
/**
* Returns the URI string of the resource file at the specified path.
*
* Example: `val uri = Res.getUri("files/key.bin")`
*
* @param path The path of the file in the compose resource's directory.
* @return The URI string of the file.
*/
@ExperimentalResourceApi
public fun getUri(path: String): String =
getResourceUri("composeResources/app.group.empty_res.generated.resources/" + path)
public object drawable
public object string
public object array
public object plurals
public object font
}

48
gradle-plugins/compose/src/test/test-projects/misc/emptyResources/expected/desktopMainResourceCollectors/app/group/empty_res/generated/resources/ActualResourceCollectors.kt

@ -0,0 +1,48 @@
@file:OptIn(org.jetbrains.compose.resources.InternalResourceApi::class)
package app.group.empty_res.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
internal actual val Res.allDrawableResources: Map<String, DrawableResource> by lazy {
val map = mutableMapOf<String, DrawableResource>()
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allStringResources: Map<String, StringResource> by lazy {
val map = mutableMapOf<String, StringResource>()
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allStringArrayResources: Map<String, StringArrayResource> by lazy {
val map = mutableMapOf<String, StringArrayResource>()
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allPluralStringResources: Map<String, PluralStringResource> by lazy {
val map = mutableMapOf<String, PluralStringResource>()
return@lazy map
}
@ExperimentalResourceApi
internal actual val Res.allFontResources: Map<String, FontResource> by lazy {
val map = mutableMapOf<String, FontResource>()
return@lazy map
}

8
gradle-plugins/compose/src/test/test-projects/misc/jvmOnlyResources/expected/mainResourceAccessors/me/app/jvmonlyresources/generated/resources/Drawable0.main.kt

@ -3,13 +3,21 @@
package me.app.jvmonlyresources.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.MutableMap
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.InternalResourceApi
private object MainDrawable0 {
public val vector: DrawableResource by
lazy { init_vector() }
}
@InternalResourceApi
internal fun _collectMainDrawable0Resources(map: MutableMap<String, DrawableResource>) {
map.put("vector", MainDrawable0.vector)
}
internal val Res.drawable.vector: DrawableResource
get() = MainDrawable0.vector

49
gradle-plugins/compose/src/test/test-projects/misc/jvmOnlyResources/expected/mainResourceCollectors/me/app/jvmonlyresources/generated/resources/ActualResourceCollectors.kt

@ -0,0 +1,49 @@
@file:OptIn(org.jetbrains.compose.resources.InternalResourceApi::class)
package me.app.jvmonlyresources.generated.resources
import kotlin.OptIn
import kotlin.String
import kotlin.collections.Map
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.FontResource
import org.jetbrains.compose.resources.PluralStringResource
import org.jetbrains.compose.resources.StringArrayResource
import org.jetbrains.compose.resources.StringResource
@ExperimentalResourceApi
internal val Res.allDrawableResources: Map<String, DrawableResource> by lazy {
val map = mutableMapOf<String, DrawableResource>()
_collectMainDrawable0Resources(map)
return@lazy map
}
@ExperimentalResourceApi
internal val Res.allStringResources: Map<String, StringResource> by lazy {
val map = mutableMapOf<String, StringResource>()
return@lazy map
}
@ExperimentalResourceApi
internal val Res.allStringArrayResources: Map<String, StringArrayResource> by lazy {
val map = mutableMapOf<String, StringArrayResource>()
return@lazy map
}
@ExperimentalResourceApi
internal val Res.allPluralStringResources: Map<String, PluralStringResource> by lazy {
val map = mutableMapOf<String, PluralStringResource>()
return@lazy map
}
@ExperimentalResourceApi
internal val Res.allFontResources: Map<String, FontResource> by lazy {
val map = mutableMapOf<String, FontResource>()
return@lazy map
}
Loading…
Cancel
Save