[Test] Support some jvm codegen specific configuration directives

This commit is contained in:
Dmitriy Novozhilov
2021-01-22 14:34:24 +03:00
parent 7d4adaba21
commit 5c0cfa87ba
31 changed files with 73 additions and 41 deletions
@@ -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
)
}
@@ -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