From 1d6752b9126bb748daae7d4a652db6eb599f6a41 Mon Sep 17 00:00:00 2001 From: Oleksandr Karpovich Date: Mon, 7 Aug 2023 11:20:05 +0200 Subject: [PATCH] add a test for composable getter in expect/actual val getter (#3456) --- .../composable-test-cases/gradle.properties | 6 +-- .../composable-test-cases/settings.gradle.kts | 3 ++ .../expectActual/lib/build.gradle.kts | 39 +++++++++++++++++++ .../lib/src/commonMain/kotlin/Dependencies.kt | 10 +++++ .../lib/src/desktopMain/kotlin/Actuals.kt | 4 ++ .../lib/src/jsMain/kotlin/Actuals.kt | 4 ++ .../lib/src/nativeMain/kotlin/Actuals.kt | 4 ++ .../expectActual/main/build.gradle.kts | 21 ++++++++++ .../main/src/commonTest/kotlin/Tests.kt | 32 +++++++++++++++ 9 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts create mode 100644 compose/integrations/composable-test-cases/testcases/expectActual/lib/src/commonMain/kotlin/Dependencies.kt create mode 100644 compose/integrations/composable-test-cases/testcases/expectActual/lib/src/desktopMain/kotlin/Actuals.kt create mode 100644 compose/integrations/composable-test-cases/testcases/expectActual/lib/src/jsMain/kotlin/Actuals.kt create mode 100644 compose/integrations/composable-test-cases/testcases/expectActual/lib/src/nativeMain/kotlin/Actuals.kt create mode 100644 compose/integrations/composable-test-cases/testcases/expectActual/main/build.gradle.kts create mode 100644 compose/integrations/composable-test-cases/testcases/expectActual/main/src/commonTest/kotlin/Tests.kt diff --git a/compose/integrations/composable-test-cases/gradle.properties b/compose/integrations/composable-test-cases/gradle.properties index 062f87bc1e..292c20dbeb 100644 --- a/compose/integrations/composable-test-cases/gradle.properties +++ b/compose/integrations/composable-test-cases/gradle.properties @@ -2,13 +2,13 @@ org.gradle.jvmargs=-Xmx2048M -XX:MaxMetaspaceSize=512m kotlin.code.style=official kotlin.native.enableDependencyPropagation=false android.useAndroidX=true -kotlin.version=1.8.20 +kotlin.version=1.9.0 agp.version=7.3.0 -compose.version=1.5.0-dev1063 +compose.version=1.5.0-beta01 kotlin.native.cacheKind=none #empty by default - a default version will be used -compose.kotlinCompilerPluginVersion=1.4.2 +compose.kotlinCompilerPluginVersion=1.5.0 # default|failingJs - see enum class CasesToRun tests.casesToRun=default diff --git a/compose/integrations/composable-test-cases/settings.gradle.kts b/compose/integrations/composable-test-cases/settings.gradle.kts index 628c7bddb9..83bcc66de6 100644 --- a/compose/integrations/composable-test-cases/settings.gradle.kts +++ b/compose/integrations/composable-test-cases/settings.gradle.kts @@ -118,6 +118,9 @@ if (casesToRun.isDefault()) { module(":testcase-lambdas-lib", "testcases/lambdas/lib") module(":testcase-lambdas-main", "testcases/lambdas/main") + + module(":testcase-expectActual-lib", "testcases/expectActual/lib") + module(":testcase-expectActual-main", "testcases/expectActual/main") } /** diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts b/compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts new file mode 100644 index 0000000000..1ec04242a4 --- /dev/null +++ b/compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts @@ -0,0 +1,39 @@ +plugins { + kotlin("multiplatform") + id("org.jetbrains.compose") +} + +kotlin { + configureTargets() + + sourceSets { + val commonMain by getting { + dependencies { + implementation(compose.runtime) + implementation(getCommonLib()) + } + } + val commonTest by getting { + configureCommonTestDependencies() + } + + val nativeMain by creating { + dependsOn(commonMain) + } + val iosMain by getting { + dependsOn(nativeMain) + } + val linuxX64Main by getting { + dependsOn(nativeMain) + } + val macosX64Main by getting { + dependsOn(nativeMain) + } + val macosArm64Main by getting { + dependsOn(nativeMain) + } + val mingwX64Main by getting { + dependsOn(nativeMain) + } + } +} diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/commonMain/kotlin/Dependencies.kt b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/commonMain/kotlin/Dependencies.kt new file mode 100644 index 0000000000..edb625e065 --- /dev/null +++ b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/commonMain/kotlin/Dependencies.kt @@ -0,0 +1,10 @@ +import androidx.compose.runtime.Composable + +class Abc + + +val Abc.commonIntVal: Int + @Composable get() = 1000 + +expect val Abc.composableIntVal: Int + @Composable get \ No newline at end of file diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/desktopMain/kotlin/Actuals.kt b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/desktopMain/kotlin/Actuals.kt new file mode 100644 index 0000000000..3fef212c35 --- /dev/null +++ b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/desktopMain/kotlin/Actuals.kt @@ -0,0 +1,4 @@ +import androidx.compose.runtime.Composable + +actual val Abc.composableIntVal: Int + @Composable get () = 100 \ No newline at end of file diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/jsMain/kotlin/Actuals.kt b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/jsMain/kotlin/Actuals.kt new file mode 100644 index 0000000000..3fef212c35 --- /dev/null +++ b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/jsMain/kotlin/Actuals.kt @@ -0,0 +1,4 @@ +import androidx.compose.runtime.Composable + +actual val Abc.composableIntVal: Int + @Composable get () = 100 \ No newline at end of file diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/nativeMain/kotlin/Actuals.kt b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/nativeMain/kotlin/Actuals.kt new file mode 100644 index 0000000000..3fef212c35 --- /dev/null +++ b/compose/integrations/composable-test-cases/testcases/expectActual/lib/src/nativeMain/kotlin/Actuals.kt @@ -0,0 +1,4 @@ +import androidx.compose.runtime.Composable + +actual val Abc.composableIntVal: Int + @Composable get () = 100 \ No newline at end of file diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/main/build.gradle.kts b/compose/integrations/composable-test-cases/testcases/expectActual/main/build.gradle.kts new file mode 100644 index 0000000000..d49878c7d2 --- /dev/null +++ b/compose/integrations/composable-test-cases/testcases/expectActual/main/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + kotlin("multiplatform") + id("org.jetbrains.compose") +} + +kotlin { + configureTargets() + + sourceSets { + val commonMain by getting { + dependencies { + implementation(compose.runtime) + implementation(getCommonLib()) + implementation(getLibDependencyForMain()) + } + } + val commonTest by getting { + configureCommonTestDependencies() + } + } +} diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/main/src/commonTest/kotlin/Tests.kt b/compose/integrations/composable-test-cases/testcases/expectActual/main/src/commonTest/kotlin/Tests.kt new file mode 100644 index 0000000000..ec41e67c5b --- /dev/null +++ b/compose/integrations/composable-test-cases/testcases/expectActual/main/src/commonTest/kotlin/Tests.kt @@ -0,0 +1,32 @@ +import com.example.common.TextLeafNode +import com.example.common.composeText +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runTest +import kotlin.test.Test +import kotlin.test.assertEquals + +@OptIn(ExperimentalCoroutinesApi::class) +class Tests { + + @Test + // K/JS fails. Related: https://github.com/JetBrains/compose-multiplatform/issues/3373 + fun composableExpectActualValGetter() = runTest { + val root = composeText { + val v = Abc().composableIntVal + TextLeafNode("$v") + } + + assertEquals("root:{100}", root.dump()) + } + + @Test + fun commonComposableValGetter() = runTest { + val root = composeText { + val v = Abc().commonIntVal + TextLeafNode("$v") + } + + assertEquals("root:{1000}", root.dump()) + } + +}