diff --git a/web/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt b/web/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt index 02fea34042..69f6a3fd9b 100644 --- a/web/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt +++ b/web/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt @@ -4,7 +4,7 @@ import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform import java.io.File import java.net.URL -private val CHROME_DRIVER_VERSION = "104.0.5112.79" +private val CHROME_DRIVER_VERSION = "108.0.5359.71" private val GECKO_DRIVER_VERSION = "0.31.0" private fun download(url: String, file: File) { diff --git a/web/compose-compiler-integration/src/jsTest/kotlin/AnonymousObjectsInComposable.kt b/web/compose-compiler-integration/src/jsTest/kotlin/AnonymousObjectsInComposable.kt new file mode 100644 index 0000000000..0bd10d56b0 --- /dev/null +++ b/web/compose-compiler-integration/src/jsTest/kotlin/AnonymousObjectsInComposable.kt @@ -0,0 +1,95 @@ +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import kotlinx.browser.document +import org.jetbrains.compose.web.dom.Div +import org.jetbrains.compose.web.dom.Text +import org.jetbrains.compose.web.renderComposableInBody +import kotlin.test.Test +import kotlin.test.assertEquals + +class AnonymousObjectsInComposable { + + @Test + // Issue: content.Abc$composable_z540rc_k$ is not a function + // https://github.com/JetBrains/compose-jb/issues/2549 + fun testComposableInAnonymousObject() { + renderComposableInBody { + val content: HasComposable2 = createHasComposable() + content.Abc() + } + + assertEquals("
Abc
", document.body!!.firstElementChild!!.outerHTML) + } + + @Test + // Issue: + // java.lang.IllegalArgumentException: Could not find local implementation for Abc$composable + // at androidx.compose.compiler.plugins.kotlin.lower.decoys.DecoyTransformBase$DefaultImpls.getComposableForDecoy(DecoyTransformBase.kt:110) + fun testLocalClassWithComposable() { + renderComposableInBody { + HasLocalClassWithComposable() + } + + assertEquals("
Abc2
", document.body!!.firstElementChild!!.outerHTML) + } + + @Test + // Issue: + // abc3.Abc$composable_z540rc_k$ is not a function + fun testConstructorWithComposable() { + renderComposableInBody { + TestConstructor { return@TestConstructor 111 }.otherComposable!!.invoke() + } + + assertEquals("
Abc223-111
", document.body!!.firstElementChild!!.outerHTML) + } +} + +@Composable +internal fun HasLocalClassWithComposable() { + class Abc : HasComposable2 { + @Composable + override fun Abc() { + Div { Text("Abc2") } + } + } + + val abc = remember { Abc() } + abc.Abc() +} + +@Composable +internal fun createHasComposable(): HasComposable2 { + return object : HasComposable2 { + @Composable + override fun Abc() { + Div { + Text("Abc") + } + } + } +} + +internal interface HasComposable2 { + @Composable + fun Abc() +} + +class TestConstructor constructor() { + + var otherComposable: (@Composable () -> Unit)? = null + constructor(retInt: @Composable () -> Int): this() { + otherComposable = { + val abc3: HasComposable2 = object : HasComposable2 { + @Composable + override fun Abc() { + Div { + val i = retInt() + Text("Abc223-$i") + } + } + } + abc3.Abc() + } + } +} \ No newline at end of file diff --git a/web/gradle.properties b/web/gradle.properties index 7ad3db3c61..75daef2dae 100644 --- a/web/gradle.properties +++ b/web/gradle.properties @@ -2,3 +2,4 @@ compose.version=1.2.2 compose.web.buildSamples=false compose.web.tests.integration.withFirefox compose.web.tests.skip.benchmarks=false +org.gradle.jvmargs=-Xmx8g \ No newline at end of file