Skip to content

Commit d6bc1ca

Browse files
committed
Explicitly set the JVM target
1 parent 2d732ef commit d6bc1ca

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

common/src/main/kotlin/component/KotlinEnvironment.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
1414
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
1515
import org.jetbrains.kotlin.cli.jvm.config.configureJdkClasspathRoots
1616
import org.jetbrains.kotlin.cli.jvm.configureAdvancedJvmOptions
17+
import org.jetbrains.kotlin.cli.jvm.setupJvmSpecificArguments
1718
import org.jetbrains.kotlin.config.CommonConfigurationKeys
1819
import org.jetbrains.kotlin.config.CompilerConfiguration
1920
import org.jetbrains.kotlin.config.JVMConfigurationKeys
21+
import org.jetbrains.kotlin.config.JvmTarget
2022
import org.jetbrains.kotlin.config.languageVersionSettings
2123
import org.jetbrains.kotlin.ir.backend.js.jsPhases
2224
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
@@ -28,7 +30,8 @@ import java.io.File
2830

2931
class KotlinEnvironment(
3032
val classpath: List<File>,
31-
additionalJsClasspath: List<File>
33+
additionalJsClasspath: List<File>,
34+
additionalCompilerFlags: List<String> = emptyList()
3235
) {
3336
companion object {
3437
/**
@@ -46,7 +49,7 @@ class KotlinEnvironment(
4649
"-opt-in=kotlin.contracts.ExperimentalContracts",
4750
"-opt-in=kotlin.experimental.ExperimentalTypeInference",
4851
"-Xcontext-receivers",
49-
"-XXLanguage:+RangeUntilOperator"
52+
"-XXLanguage:+RangeUntilOperator",
5053
)
5154
}
5255

@@ -59,6 +62,7 @@ class KotlinEnvironment(
5962
}
6063

6164
val JS_LIBRARIES = additionalJsClasspath.map { it.absolutePath }
65+
val additionalCompilerOptions = additionalCompilerFlags + additionalCompilerArguments
6266

6367
@Synchronized
6468
fun <T> environment(f: (KotlinCoreEnvironment) -> T): T {
@@ -96,7 +100,7 @@ class KotlinEnvironment(
96100

97101
private fun createConfiguration(): CompilerConfiguration {
98102
val arguments = K2JVMCompilerArguments()
99-
parseCommandLineArguments(additionalCompilerArguments, arguments)
103+
parseCommandLineArguments(additionalCompilerOptions, arguments)
100104
return CompilerConfiguration().apply {
101105
addJvmClasspathRoots(classpath.filter { it.exists() && it.isFile && it.extension == "jar" })
102106
val messageCollector = MessageCollector.NONE
@@ -109,9 +113,10 @@ class KotlinEnvironment(
109113

110114
// it uses languageVersionSettings that was set above
111115
configureAdvancedJvmOptions(arguments)
116+
setupJvmSpecificArguments(arguments)
112117
put(JVMConfigurationKeys.DO_NOT_CLEAR_BINDING_CONTEXT, true)
113118

114119
configureJdkClasspathRoots()
115120
}
116121
}
117-
}
122+
}

src/test/kotlin/com/compiler/server/JvmRunnerTest.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,29 @@
11
package com.compiler.server
22

33
import com.compiler.server.base.BaseExecutorTest
4+
import component.KotlinEnvironment
5+
import org.jetbrains.kotlin.config.JVMConfigurationKeys
6+
import org.jetbrains.kotlin.config.JvmTarget
7+
import org.junit.jupiter.api.Assertions
48
import org.junit.jupiter.api.Test
59

610
class JvmRunnerTest : BaseExecutorTest() {
711

12+
@Test
13+
fun `jvm test setting java 11`() {
14+
val kv = KotlinEnvironment(emptyList(), emptyList(), listOf("-jvm-target=11"))
15+
kv.environment {
16+
Assertions.assertEquals(JvmTarget.JVM_11, it.configuration.get(JVMConfigurationKeys.JVM_TARGET), "JVM target should be java 11")
17+
}
18+
}
19+
20+
@Test
21+
fun `jvm test default`() {
22+
val kv = KotlinEnvironment(emptyList(), emptyList(), emptyList())
23+
kv.environment {
24+
Assertions.assertEquals(null, it.configuration.get(JVMConfigurationKeys.JVM_TARGET), "JVM target is not set")
25+
}
26+
}
827
@Test
928
fun `base execute test JVM`() {
1029
run(
@@ -13,6 +32,7 @@ class JvmRunnerTest : BaseExecutorTest() {
1332
)
1433
}
1534

35+
1636
@Test
1737
fun `no main class jvm test`() {
1838
run(

0 commit comments

Comments
 (0)