1
1
package component
2
2
3
- import com.intellij.openapi.util.Disposer
4
- import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
5
- import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
6
- import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
7
- import org.jetbrains.kotlin.cli.common.messages.MessageCollector
8
- import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
9
- import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
10
- import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
11
- import org.jetbrains.kotlin.cli.jvm.config.configureJdkClasspathRoots
12
- import org.jetbrains.kotlin.cli.jvm.configureAdvancedJvmOptions
13
- import org.jetbrains.kotlin.config.CommonConfigurationKeys
14
- import org.jetbrains.kotlin.config.CompilerConfiguration
15
- import org.jetbrains.kotlin.config.JVMConfigurationKeys
16
- import org.jetbrains.kotlin.config.languageVersionSettings
17
- import org.jetbrains.kotlin.js.config.JSConfigurationKeys
18
- import org.jetbrains.kotlin.serialization.js.JsModuleDescriptor
19
- import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil
20
- import org.jetbrains.kotlin.serialization.js.ModuleKind
21
- import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
22
3
import java.io.File
23
4
24
5
class KotlinEnvironment (
@@ -45,65 +26,7 @@ class KotlinEnvironment(
45
26
)
46
27
}
47
28
48
- val JS_METADATA_CACHE =
49
- additionalJsClasspath.flatMap {
50
- KotlinJavascriptMetadataUtils .loadMetadata(it.absolutePath).map { metadata ->
51
- val parts = KotlinJavascriptSerializationUtil .readModuleAsProto(metadata.body, metadata.version)
52
- JsModuleDescriptor (metadata.moduleName, parts.kind, parts.importedModules, parts)
53
- }
54
- }
55
-
56
29
val JS_LIBRARIES = additionalJsClasspath.map { it.absolutePath }
57
30
val WASM_LIBRARIES = additionalWasmClasspath.map { it.absolutePath }
58
31
59
- @Synchronized
60
- fun <T > environment (f : (KotlinCoreEnvironment ) -> T ): T {
61
- return f(environment)
62
- }
63
-
64
- private val configuration = createConfiguration()
65
- val jsConfiguration: CompilerConfiguration = configuration.copy().apply {
66
- put(CommonConfigurationKeys .MODULE_NAME , " moduleId" )
67
- put(JSConfigurationKeys .MODULE_KIND , ModuleKind .PLAIN )
68
- put(JSConfigurationKeys .LIBRARIES , JS_LIBRARIES )
69
- }
70
-
71
- val wasmConfiguration: CompilerConfiguration = configuration.copy().apply {
72
- put(CommonConfigurationKeys .MODULE_NAME , " moduleId" )
73
- put(JSConfigurationKeys .LIBRARIES , WASM_LIBRARIES )
74
- put(JSConfigurationKeys .WASM_ENABLE_ARRAY_RANGE_CHECKS , false )
75
- put(JSConfigurationKeys .WASM_ENABLE_ASSERTS , false )
76
- }
77
-
78
- private val environment = KotlinCoreEnvironment .createForProduction(
79
- parentDisposable = Disposer .newDisposable(),
80
- configuration = configuration.copy(),
81
- configFiles = EnvironmentConfigFiles .JVM_CONFIG_FILES
82
- )
83
-
84
- private fun createConfiguration (): CompilerConfiguration {
85
- val arguments = K2JVMCompilerArguments ()
86
- parseCommandLineArguments(additionalCompilerArguments, arguments)
87
- return CompilerConfiguration ().apply {
88
- addJvmClasspathRoots(classpath.filter { it.exists() && it.isFile && it.extension == " jar" })
89
- val messageCollector = MessageCollector .NONE
90
- put(CLIConfigurationKeys .MESSAGE_COLLECTOR_KEY , messageCollector)
91
- put(CommonConfigurationKeys .MODULE_NAME , " web-module" )
92
- put(JSConfigurationKeys .TYPED_ARRAYS_ENABLED , true )
93
- put(JSConfigurationKeys .PROPERTY_LAZY_INITIALIZATION , true )
94
-
95
- languageVersionSettings = arguments.toLanguageVersionSettings(messageCollector)
96
-
97
- // it uses languageVersionSettings that was set above
98
- configureAdvancedJvmOptions(arguments)
99
- put(JVMConfigurationKeys .DO_NOT_CLEAR_BINDING_CONTEXT , true )
100
-
101
- configureJdkClasspathRoots()
102
- val jdkHome = get(JVMConfigurationKeys .JDK_HOME )
103
- if (jdkHome == null ) {
104
- val javaHome = File (System .getProperty(" java.home" ))
105
- put(JVMConfigurationKeys .JDK_HOME , javaHome)
106
- }
107
- }
108
- }
109
32
}
0 commit comments