Skip to content

Commit ced957c

Browse files
committed
Adopt Kotlin Wasm 2.2.20 two-module-compilation and compose 1.9.0-rc02
1 parent 82d43ea commit ced957c

File tree

4 files changed

+38
-31
lines changed

4 files changed

+38
-31
lines changed

build-settings-logic/src/main/kotlin/kotlin-compiler-server-version-catalog.settings.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ pluginManagement {
22
repositories {
33
gradlePluginPortal()
44
mavenCentral()
5+
google()
56
mavenLocal()
67

78
val additionalRepositoryProperty = providers.gradleProperty("kotlin_repo_url")
@@ -22,6 +23,7 @@ dependencyResolutionManagement {
2223
repositories {
2324
mavenCentral()
2425
gradlePluginPortal()
26+
google()
2527
mavenLocal()
2628

2729
val additionalRepositoryProperty = providers.gradleProperty("kotlin_repo_url")

cache-maker/src/wasmJsMain/kotlin/main.kt

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,45 @@
1-
import androidx.compose.ui.ExperimentalComposeUiApi
2-
import androidx.compose.ui.window.CanvasBasedWindow
31
import androidx.compose.animation.AnimatedVisibility
4-
import androidx.compose.foundation.Image
52
import androidx.compose.foundation.layout.Column
3+
import androidx.compose.foundation.layout.fillMaxSize
64
import androidx.compose.foundation.layout.fillMaxWidth
75
import androidx.compose.material.Button
86
import androidx.compose.material.MaterialTheme
97
import androidx.compose.material.Text
10-
import androidx.compose.runtime.Composable
11-
import androidx.compose.runtime.getValue
12-
import androidx.compose.runtime.mutableStateOf
13-
import androidx.compose.runtime.remember
14-
import androidx.compose.runtime.setValue
8+
import androidx.compose.runtime.*
159
import androidx.compose.ui.Alignment
10+
import androidx.compose.ui.ExperimentalComposeUiApi
1611
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.window.ComposeViewport
13+
import kotlinx.browser.document
1714

1815
//sampleStart
1916
@OptIn(ExperimentalComposeUiApi::class)
2017
fun main() {
21-
CanvasBasedWindow { App() }
18+
ComposeViewport(document.body!!) {
19+
App()
20+
}
2221
}
2322

2423
@Composable
2524
fun App() {
2625
MaterialTheme {
27-
var greetingText by remember { mutableStateOf("Hello World!") }
28-
var showImage by remember { mutableStateOf(false) }
29-
var counter by remember { mutableStateOf(0) }
30-
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
31-
Button(onClick = {
32-
counter++
33-
greetingText = "Compose: ${Greeting().greet()}"
34-
showImage = !showImage
35-
}) {
36-
Text(greetingText)
26+
var showContent by remember { mutableStateOf(false) }
27+
Column(
28+
modifier = Modifier
29+
.fillMaxSize(),
30+
horizontalAlignment = Alignment.CenterHorizontally,
31+
) {
32+
Button(onClick = { showContent = !showContent }) {
33+
Text("Click me!")
3734
}
38-
AnimatedVisibility(showImage) {
39-
Text(counter.toString())
35+
AnimatedVisibility(showContent) {
36+
val greeting = remember { Greeting().greet() }
37+
Column(
38+
modifier = Modifier.fillMaxWidth(),
39+
horizontalAlignment = Alignment.CenterHorizontally,
40+
) {
41+
Text("Compose: $greeting")
42+
}
4043
}
4144
}
4245
}

gradle/libs.versions.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[versions]
2-
kotlin = "2.2.20-339"
2+
kotlin = "2.2.21-RC-343"
33
kotlinIdeVersion = "1.9.20-506"
44
kotlinIdeVersionWithSuffix = "231-1.9.20-506-IJ8109.175"
55
spring-boot = "3.5.5"
@@ -15,11 +15,12 @@ kotlinx-coroutines-test = "1.6.4"
1515
kotlinx-datetime = "0.7.1-0.6.x-compat"
1616
kotlinx-io = "0.8.0"
1717
kotlinx-serialization = "1.9.0"
18-
skiko = "0.9.24"
18+
skiko = "0.9.22.2"
1919
# don't forget to update jackson version in `executor.policy` file.
2020
jackson = "2.19.2"
2121
hamcrest = "3.0"
22-
compose = "1.7.0"
22+
compose = "1.9.0-rc02"
23+
compose-material3 = "1.9.0-beta05"
2324
gradle-develocity = "3.17.5"
2425

2526
[libraries]
@@ -66,7 +67,7 @@ compose-animation = { group = "org.jetbrains.compose.animation", name = "animati
6667
compose-animation-graphics = { group = "org.jetbrains.compose.animation", name = "animation-graphics", version.ref = "compose" }
6768
compose-foundation = { group = "org.jetbrains.compose.foundation", name = "foundation", version.ref = "compose" }
6869
compose-material = { group = "org.jetbrains.compose.material", name = "material", version.ref = "compose" }
69-
compose-material3 = { group = "org.jetbrains.compose.material3", name = "material3", version.ref = "compose" }
70+
compose-material3 = { group = "org.jetbrains.compose.material3", name = "material3", version.ref = "compose-material3" }
7071
compose-components-resources = { group = "org.jetbrains.compose.components", name = "components-resources", version.ref = "compose" }
7172
kotlin-serialization-plugin = {group= "org.jetbrains.kotlin", name="kotlin-serialization-compiler-plugin", version.ref = "kotlin"}
7273
gradle-develocity = {group = "com.gradle", name= "develocity-gradle-plugin", version.ref = "gradle-develocity"}

src/main/kotlin/com/compiler/server/compiler/components/KotlinToJSTranslator.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import org.jetbrains.kotlin.cli.js.K2JSCompiler
77
import org.jetbrains.kotlin.psi.KtFile
88
import org.slf4j.LoggerFactory
99
import org.springframework.stereotype.Service
10-
import java.io.File
11-
import java.nio.file.Path
1210
import kotlin.io.path.div
1311
import kotlin.io.path.readBytes
1412
import kotlin.io.path.readText
@@ -158,11 +156,10 @@ class KotlinToJSTranslator(
158156
val moduleName = "playground"
159157
usingTempDirectory { outputDir ->
160158
val ioFiles = files.writeToIoFiles(inputDir)
161-
val k2JSCompiler = K2JSCompiler()
162159
val filePaths = ioFiles.map { it.toFile().canonicalPath }
163160
val klibPath = (outputDir / "klib").toFile().canonicalPath
164161

165-
k2JSCompiler.tryCompilation(
162+
K2JSCompiler().tryCompilation(
166163
inputDir,
167164
ioFiles,
168165
compileWasmArgs(
@@ -175,7 +172,7 @@ class KotlinToJSTranslator(
175172
)
176173
)
177174
.flatMap {
178-
k2JSCompiler.tryCompilation(
175+
K2JSCompiler().tryCompilation(
179176
inputDir, ioFiles,
180177
linkWasmArgs(
181178
moduleName,
@@ -189,7 +186,7 @@ class KotlinToJSTranslator(
189186
}
190187
.map {
191188
WasmTranslationSuccessfulOutput(
192-
jsCode = (outputDir / "wasm" / "$moduleName.uninstantiated.mjs").readText(),
189+
jsCode = (outputDir / "wasm" / "$moduleName.uninstantiated.mjs").readText().fixSkikoImport(),
193190
jsInstantiated = (outputDir / "wasm" / "$moduleName.mjs").readText(),
194191
wasm = (outputDir / "wasm" / "$moduleName.wasm").readBytes(),
195192
wat = if (debugInfo) (outputDir / "wasm" / "$moduleName.wat").readText() else null,
@@ -199,6 +196,10 @@ class KotlinToJSTranslator(
199196
}
200197
}
201198

199+
private fun String.fixSkikoImport(): String = lineSequence()
200+
.filterNot { it.contains("imports['./skiko.mjs'].skikoApi") }
201+
.joinToString("\n")
202+
202203
private fun String.withMainArgumentsIr(arguments: List<String>): String {
203204
val mainIrFunction = """
204205
| function mainWrapper() {

0 commit comments

Comments
 (0)