@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
1010import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
1111import org.jetbrains.kotlin.cli.jvm.config.configureJdkClasspathRoots
1212import org.jetbrains.kotlin.cli.jvm.configureAdvancedJvmOptions
13+ import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
1314import org.jetbrains.kotlin.config.CommonConfigurationKeys
1415import org.jetbrains.kotlin.config.CompilerConfiguration
1516import org.jetbrains.kotlin.config.JVMConfigurationKeys
@@ -26,8 +27,9 @@ class KotlinEnvironment(
2627 val classpath : List <File >,
2728 additionalJsClasspath : List <File >,
2829 additionalWasmClasspath : List <File >,
29- compilerPlugins : List <File >,
30- compilerPluginsOptions : List <CompilerPluginOption >
30+ additionalComposeWasmClasspath : List <File >,
31+ composeWasmCompilerPlugins : List <File >,
32+ composeWasmCompilerPluginsOptions : List <CompilerPluginOption >
3133) {
3234 companion object {
3335 /* *
@@ -62,10 +64,13 @@ class KotlinEnvironment(
6264 val WASM_LIBRARIES = additionalWasmClasspath
6365 .map { it.absolutePath }
6466 .filter { isKotlinLibrary(File (it)) }
65- val COMPILER_PLUGINS = compilerPlugins
67+ val COMPOSE_WASM_LIBRARIES = additionalComposeWasmClasspath
68+ .map { it.absolutePath }
69+ .filter { isKotlinLibrary(File (it)) }
70+ val COMPOSE_WASM_COMPILER_PLUGINS = composeWasmCompilerPlugins
6671 .map { it.absolutePath }
6772
68- val compilerPluginOptions = compilerPluginsOptions
73+ val composeWasmCompilerPluginOptions = composeWasmCompilerPluginsOptions
6974 .map { " plugin:${it.id} :${it.option} =${it.value} " }
7075
7176 @Synchronized
@@ -87,6 +92,20 @@ class KotlinEnvironment(
8792 put(JSConfigurationKeys .WASM_ENABLE_ASSERTS , false )
8893 }
8994
95+ val composeWasmConfiguration: CompilerConfiguration = configuration.copy().apply {
96+ put(CommonConfigurationKeys .MODULE_NAME , " moduleId" )
97+ put(JSConfigurationKeys .LIBRARIES , COMPOSE_WASM_LIBRARIES )
98+ put(JSConfigurationKeys .WASM_ENABLE_ARRAY_RANGE_CHECKS , false )
99+ put(JSConfigurationKeys .WASM_ENABLE_ASSERTS , false )
100+
101+ PluginCliParser .loadPluginsSafe(
102+ COMPOSE_WASM_COMPILER_PLUGINS ,
103+ composeWasmCompilerPluginOptions,
104+ emptyList(),
105+ this
106+ )
107+ }
108+
90109 private val environment = KotlinCoreEnvironment .createForProduction(
91110 parentDisposable = Disposer .newDisposable(),
92111 configuration = configuration.copy(),
0 commit comments