File tree Expand file tree Collapse file tree 5 files changed +54
-2
lines changed
compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs
libraries/tools/kotlin-gradle-plugin-integration-tests/src/test
kotlin/org/jetbrains/kotlin/gradle
resources/testProject/kotlin-js-compose-dependency Expand file tree Collapse file tree 5 files changed +54
-2
lines changed Original file line number Diff line number Diff line change @@ -128,6 +128,8 @@ class CrossModuleDependenciesResolver(
128
128
}
129
129
}
130
130
131
+ headerToBuilder.forEach { it.value.buildExportNames() }
132
+
131
133
return headers.associateWith { headerToBuilder[it]!! .buildCrossModuleRefs() }
132
134
}
133
135
}
@@ -145,13 +147,12 @@ private class JsIrModuleCrossModuleReferenceBuilder(
145
147
146
148
private lateinit var exportNames: Map <String , String > // tag -> index
147
149
148
- private fun buildExportNames () {
150
+ fun buildExportNames () {
149
151
var index = 0
150
152
exportNames = exports.sorted().associateWith { index++ .toJsIdentifier() }
151
153
}
152
154
153
155
fun buildCrossModuleRefs (): CrossModuleReferences {
154
- buildExportNames()
155
156
val isImportOptional = moduleKind == ModuleKind .ES
156
157
val importedModules = mutableMapOf<JsIrModuleHeader , JsImportedModule >()
157
158
Original file line number Diff line number Diff line change @@ -620,6 +620,16 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
620
620
}
621
621
}
622
622
}
623
+
624
+ @DisplayName(" Cross modules work correctly with compose dependency ('KT60852')" )
625
+ @GradleTest
626
+ fun crossModulesWorkCorrectlyWithComposeDependencyKT60852 (gradleVersion : GradleVersion ) {
627
+ project(" kotlin-js-compose-dependency" , gradleVersion) {
628
+ build(" compileDevelopmentExecutableKotlinJs" ) {
629
+ assertTasksExecuted(" :compileDevelopmentExecutableKotlinJs" )
630
+ }
631
+ }
632
+ }
623
633
}
624
634
625
635
@JsGradlePluginTests
Original file line number Diff line number Diff line change
1
+ plugins {
2
+ id(" org.jetbrains.kotlin.multiplatform" )
3
+ }
4
+
5
+ repositories {
6
+ mavenLocal()
7
+ mavenCentral()
8
+ }
9
+
10
+ kotlin {
11
+ js {
12
+ binaries.executable()
13
+ nodejs {
14
+ }
15
+ }
16
+ sourceSets {
17
+ val commonMain by getting {
18
+ dependencies {
19
+ implementation(" org.jetbrains.compose.runtime:runtime:1.4.3" ) // commenting this out and uncommenting in jsMain fixes the issue
20
+ }
21
+ }
22
+ val jsMain by getting {
23
+ dependencies {
24
+ implementation(" org.jetbrains.compose.html:html-core:1.4.3" )
25
+ }
26
+ }
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ kotlin.js.compiler =ir
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
3
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
4
+ */
5
+
6
+ import org.jetbrains.compose.web.internal.runtime.ComposeWebInternalApi
7
+ import org.jetbrains.compose.web.internal.runtime.DomApplier
8
+
9
+ @OptIn(ComposeWebInternalApi ::class )
10
+ fun main () {
11
+ DomApplier ::class .js
12
+ }
You can’t perform that action at this time.
0 commit comments