[Test] Support some jvm codegen specific configuration directives
This commit is contained in:
+22
@@ -5,11 +5,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.test.directives
|
||||
|
||||
import org.jetbrains.kotlin.config.JVMAssertionsMode
|
||||
import org.jetbrains.kotlin.config.JVMConstructorCallNormalizationMode
|
||||
import org.jetbrains.kotlin.config.JvmStringConcat
|
||||
import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||
|
||||
object JvmEnvironmentConfigurationDirectives : SimpleDirectivesContainer() {
|
||||
@Suppress("RemoveExplicitTypeArguments")
|
||||
val JVM_TARGET by enumDirective<JvmTarget>(
|
||||
description = "Target bytecode version",
|
||||
additionalParser = JvmTarget.Companion::fromString
|
||||
@@ -34,4 +38,22 @@ object JvmEnvironmentConfigurationDirectives : SimpleDirectivesContainer() {
|
||||
val USE_PSI_CLASS_FILES_READING by directive("Use a slower (PSI-based) class files reading implementation")
|
||||
val USE_JAVAC by directive("Enable javac integration")
|
||||
val SKIP_JAVA_SOURCES by directive("Don't add java sources to compile classpath")
|
||||
|
||||
@Suppress("RemoveExplicitTypeArguments")
|
||||
val STRING_CONCAT by enumDirective<JvmStringConcat>(
|
||||
description = "Configure mode of string concatenation",
|
||||
additionalParser = JvmStringConcat.Companion::fromString
|
||||
)
|
||||
|
||||
@Suppress("RemoveExplicitTypeArguments")
|
||||
val ASSERTIONS_MODE by enumDirective<JVMAssertionsMode>(
|
||||
description = "Configure jvm assertions mode",
|
||||
additionalParser = JVMAssertionsMode.Companion::fromString
|
||||
)
|
||||
|
||||
@Suppress("RemoveExplicitTypeArguments")
|
||||
val CONSTRUCTOR_CALL_NORMALIZATION_MODE by enumDirective<JVMConstructorCallNormalizationMode>(
|
||||
description = "Configure jvm constructor call normalization mode",
|
||||
additionalParser = JVMConstructorCallNormalizationMode.Companion::fromStringOrNull
|
||||
)
|
||||
}
|
||||
|
||||
+10
@@ -19,6 +19,9 @@ import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.ASSERTIONS_MODE
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.CONSTRUCTOR_CALL_NORMALIZATION_MODE
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.STRING_CONCAT
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||
@@ -26,6 +29,7 @@ import org.jetbrains.kotlin.test.model.DependencyDescription
|
||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.*
|
||||
import org.jetbrains.kotlin.test.services.DirectiveToConfigurationKeyExtractor
|
||||
import org.jetbrains.kotlin.test.services.jvm.CompiledClassesManager
|
||||
import org.jetbrains.kotlin.test.services.jvm.compiledClassesManager
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil
|
||||
@@ -44,6 +48,12 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig
|
||||
override val additionalServices: List<ServiceRegistrationData>
|
||||
get() = listOf(service(::CompiledClassesManager))
|
||||
|
||||
override fun DirectiveToConfigurationKeyExtractor.provideConfigurationKeys() {
|
||||
register(STRING_CONCAT, JVMConfigurationKeys.STRING_CONCAT)
|
||||
register(ASSERTIONS_MODE, JVMConfigurationKeys.ASSERTIONS_MODE)
|
||||
register(CONSTRUCTOR_CALL_NORMALIZATION_MODE, JVMConfigurationKeys.CONSTRUCTOR_CALL_NORMALIZATION_MODE)
|
||||
}
|
||||
|
||||
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule, project: MockProject) {
|
||||
if (module.targetPlatform !in JvmPlatforms.allJvmPlatforms) return
|
||||
val registeredDirectives = module.directives
|
||||
|
||||
Reference in New Issue
Block a user