Revert "[Test] Save TargetBackend instead of BackendKind in TestModule"
This reverts commit 29d923d5
This commit is contained in:
@@ -6,11 +6,14 @@
|
||||
package org.jetbrains.kotlin.test
|
||||
|
||||
import com.intellij.openapi.Disposable
|
||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||
import org.jetbrains.kotlin.test.model.*
|
||||
import org.jetbrains.kotlin.test.services.MetaTestConfigurator
|
||||
import org.jetbrains.kotlin.test.services.ModuleStructureExtractor
|
||||
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
typealias Constructor<T> = (TestServices) -> T
|
||||
|
||||
@@ -49,7 +49,7 @@ class TestRunner(private val testConfiguration: TestConfiguration) {
|
||||
var failedException: Throwable? = null
|
||||
try {
|
||||
for (module in modules) {
|
||||
processModule(services, module, dependencyProvider, moduleStructure)
|
||||
processModule(module, dependencyProvider, moduleStructure)
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
failedException = e
|
||||
@@ -81,7 +81,6 @@ class TestRunner(private val testConfiguration: TestConfiguration) {
|
||||
}
|
||||
|
||||
private fun processModule(
|
||||
services: TestServices,
|
||||
module: TestModule,
|
||||
dependencyProvider: DependencyProviderImpl,
|
||||
moduleStructure: TestModuleStructure
|
||||
@@ -100,7 +99,7 @@ class TestRunner(private val testConfiguration: TestConfiguration) {
|
||||
}
|
||||
}
|
||||
|
||||
val backendKind = services.backendKindExtractor.backendKind(module.targetBackend)
|
||||
val backendKind = module.backendKind
|
||||
if (!backendKind.shouldRunAnalysis) return
|
||||
|
||||
val backendInputInfo = testConfiguration.getFacade(frontendKind, backendKind)
|
||||
|
||||
+1
-2
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.test.directives
|
||||
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||
|
||||
object ModuleStructureDirectives : SimpleDirectivesContainer() {
|
||||
@@ -46,7 +45,7 @@ object ModuleStructureDirectives : SimpleDirectivesContainer() {
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
val TARGET_BACKEND_KIND by enumDirective<TargetBackend>(
|
||||
val TARGET_BACKEND_KIND by stringDirective(
|
||||
"""
|
||||
Usage: // TARGET_BACKEND: {Backend}
|
||||
Declares backend for analyzing current module
|
||||
|
||||
@@ -7,15 +7,14 @@ package org.jetbrains.kotlin.test.model
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||
import java.io.File
|
||||
|
||||
data class TestModule(
|
||||
val name: String,
|
||||
val targetPlatform: TargetPlatform,
|
||||
val targetBackend: TargetBackend?,
|
||||
val frontendKind: FrontendKind<*>,
|
||||
val backendKind: BackendKind<*>,
|
||||
val files: List<TestFile>,
|
||||
val dependencies: List<DependencyDescription>,
|
||||
val directives: RegisteredDirectives,
|
||||
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.test.services
|
||||
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.model.BackendKind
|
||||
|
||||
abstract class BackendKindExtractor(protected val testServices: TestServices) : TestService {
|
||||
abstract fun backendKind(targetBackend: TargetBackend?): BackendKind<*>
|
||||
}
|
||||
|
||||
val TestServices.backendKindExtractor: BackendKindExtractor by TestServices.testServiceAccessor()
|
||||
+2
-2
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.test.services
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.builders.LanguageVersionSettingsBuilder
|
||||
import org.jetbrains.kotlin.test.model.BackendKind
|
||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||
import org.jetbrains.kotlin.test.model.FrontendKind
|
||||
|
||||
@@ -18,11 +18,11 @@ import org.jetbrains.kotlin.test.model.FrontendKind
|
||||
* - default libraries
|
||||
*/
|
||||
class DefaultsProvider(
|
||||
val defaultBackend: BackendKind<*>,
|
||||
val defaultFrontend: FrontendKind<*>,
|
||||
val defaultLanguageSettings: LanguageVersionSettings,
|
||||
private val defaultLanguageSettingsBuilder: LanguageVersionSettingsBuilder,
|
||||
val defaultPlatform: TargetPlatform,
|
||||
val defaultTargetBackend: TargetBackend?,
|
||||
val defaultDependencyKind: DependencyKind
|
||||
) : TestService {
|
||||
fun newLanguageSettingsBuilder(): LanguageVersionSettingsBuilder {
|
||||
|
||||
+16
-1
@@ -25,7 +25,7 @@ class BlackBoxCodegenSuppressor(testServices: TestServices) : AfterAnalysisCheck
|
||||
val moduleStructure = testServices.moduleStructure
|
||||
val ignoredBackends = moduleStructure.modules.flatMap { it.directives[CodegenTestDirectives.IGNORE_BACKEND] }
|
||||
if (ignoredBackends.isEmpty()) return failedAssertions
|
||||
val targetBackends = moduleStructure.modules.map { it.targetBackend }
|
||||
val targetBackends = moduleStructure.modules.flatMap { it.targetBackends }
|
||||
val matchedBackend = ignoredBackends.intersect(targetBackends)
|
||||
if (ignoredBackends.contains(TargetBackend.ANY)) {
|
||||
return processAssertions(failedAssertions)
|
||||
@@ -50,4 +50,19 @@ class BlackBoxCodegenSuppressor(testServices: TestServices) : AfterAnalysisCheck
|
||||
listOf(AssertionError(message))
|
||||
}
|
||||
}
|
||||
|
||||
private val TestModule.targetBackends: List<TargetBackend>
|
||||
get() = when (backendKind) {
|
||||
BackendKinds.ClassicBackend -> when {
|
||||
targetPlatform.isJvm() -> listOf(TargetBackend.JVM, TargetBackend.JVM_OLD)
|
||||
targetPlatform.isJs() -> listOf(TargetBackend.JS)
|
||||
else -> emptyList()
|
||||
}
|
||||
BackendKinds.IrBackend -> when {
|
||||
targetPlatform.isJvm() -> listOf(TargetBackend.JVM_IR)
|
||||
targetPlatform.isJs() -> listOf(TargetBackend.JS_IR)
|
||||
else -> emptyList()
|
||||
}
|
||||
else -> emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -11,16 +11,16 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.fir.PrivateForInline
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.services.DefaultsDsl
|
||||
import org.jetbrains.kotlin.test.services.DefaultsProvider
|
||||
import org.jetbrains.kotlin.test.model.BackendKind
|
||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||
import org.jetbrains.kotlin.test.model.FrontendKind
|
||||
|
||||
@DefaultsDsl
|
||||
class DefaultsProviderBuilder {
|
||||
lateinit var backend: BackendKind<*>
|
||||
lateinit var frontend: FrontendKind<*>
|
||||
var targetBackend: TargetBackend? = null
|
||||
lateinit var targetPlatform: TargetPlatform
|
||||
lateinit var dependencyKind: DependencyKind
|
||||
|
||||
@@ -40,11 +40,11 @@ class DefaultsProviderBuilder {
|
||||
@OptIn(PrivateForInline::class)
|
||||
fun build(): DefaultsProvider {
|
||||
return DefaultsProvider(
|
||||
backend,
|
||||
frontend,
|
||||
languageVersionSettings ?: LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE),
|
||||
languageVersionSettingsBuilder ?: LanguageVersionSettingsBuilder(),
|
||||
targetPlatform,
|
||||
targetBackend,
|
||||
dependencyKind
|
||||
)
|
||||
}
|
||||
|
||||
+1
-11
@@ -37,15 +37,6 @@ class TestConfigurationBuilder {
|
||||
val defaultRegisteredDirectivesBuilder: RegisteredDirectivesBuilder = RegisteredDirectivesBuilder()
|
||||
|
||||
private val configurationsByTestDataCondition: MutableList<Pair<Regex, TestConfigurationBuilder.() -> Unit>> = mutableListOf()
|
||||
private val additionalServices: MutableList<ServiceRegistrationData> = mutableListOf()
|
||||
|
||||
inline fun <reified T : TestService> useAdditionalService(noinline serviceConstructor: (TestServices) -> T) {
|
||||
useAdditionalService(service(serviceConstructor))
|
||||
}
|
||||
|
||||
fun useAdditionalService(serviceRegistrationData: ServiceRegistrationData) {
|
||||
additionalServices += serviceRegistrationData
|
||||
}
|
||||
|
||||
fun forTestsMatching(pattern: String, configuration: TestConfigurationBuilder.() -> Unit) {
|
||||
val regex = pattern.toMatchingRegexString().toRegex()
|
||||
@@ -149,8 +140,7 @@ class TestConfigurationBuilder {
|
||||
afterAnalysisCheckers,
|
||||
metaInfoHandlerEnabled,
|
||||
directives,
|
||||
defaultRegisteredDirectivesBuilder.build(),
|
||||
additionalServices
|
||||
defaultRegisteredDirectivesBuilder.build()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-6
@@ -35,16 +35,11 @@ class TestConfigurationImpl(
|
||||
override val metaInfoHandlerEnabled: Boolean,
|
||||
|
||||
directives: List<DirectivesContainer>,
|
||||
override val defaultRegisteredDirectives: RegisteredDirectives,
|
||||
additionalServices: List<ServiceRegistrationData>
|
||||
override val defaultRegisteredDirectives: RegisteredDirectives
|
||||
) : TestConfiguration() {
|
||||
override val rootDisposable: Disposable = TestDisposable()
|
||||
override val testServices: TestServices = TestServices()
|
||||
|
||||
init {
|
||||
additionalServices.forEach { testServices.register(it) }
|
||||
}
|
||||
|
||||
private val allDirectives = directives.toMutableSet()
|
||||
override val directives: DirectivesContainer by lazy {
|
||||
when (allDirectives.size) {
|
||||
|
||||
-3
@@ -12,10 +12,8 @@ import org.jetbrains.kotlin.test.builders.testRunner
|
||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.preprocessors.MetaInfosCleanupPreprocessor
|
||||
import org.jetbrains.kotlin.test.services.BackendKindExtractor
|
||||
import org.jetbrains.kotlin.test.services.JUnit5Assertions
|
||||
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
|
||||
import org.jetbrains.kotlin.test.services.impl.BackendKindExtractorImpl
|
||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||
import org.jetbrains.kotlin.types.FlexibleTypeImpl
|
||||
|
||||
@@ -33,7 +31,6 @@ abstract class AbstractKotlinCompilerTest {
|
||||
|
||||
private val configuration: TestConfigurationBuilder.() -> Unit = {
|
||||
assertions = JUnit5Assertions
|
||||
useAdditionalService<BackendKindExtractor>(::BackendKindExtractorImpl)
|
||||
useSourcePreprocessor(*defaultPreprocessors.toTypedArray())
|
||||
useDirectives(*defaultDirectiveContainers.toTypedArray())
|
||||
configureDebugFlags()
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.test.services.impl
|
||||
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.model.BackendKind
|
||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
||||
import org.jetbrains.kotlin.test.services.BackendKindExtractor
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
class BackendKindExtractorImpl(testServices: TestServices) : BackendKindExtractor(testServices) {
|
||||
override fun backendKind(targetBackend: TargetBackend?): BackendKind<*> {
|
||||
return when (targetBackend) {
|
||||
TargetBackend.ANY,
|
||||
TargetBackend.JVM,
|
||||
TargetBackend.JVM_OLD,
|
||||
TargetBackend.ANDROID,
|
||||
TargetBackend.JVM_MULTI_MODULE_OLD_AGAINST_IR -> BackendKinds.ClassicBackend
|
||||
|
||||
TargetBackend.JVM_IR,
|
||||
TargetBackend.JVM_MULTI_MODULE_IR_AGAINST_OLD,
|
||||
TargetBackend.JS,
|
||||
TargetBackend.JS_IR,
|
||||
TargetBackend.JS_IR_ES6,
|
||||
TargetBackend.WASM -> BackendKinds.IrBackend
|
||||
|
||||
null -> BackendKind.NoBackend
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
-5
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
||||
import org.jetbrains.kotlin.test.Assertions
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.builders.LanguageVersionSettingsBuilder
|
||||
import org.jetbrains.kotlin.test.directives.ModuleStructureDirectives
|
||||
import org.jetbrains.kotlin.test.directives.model.ComposedRegisteredDirectives
|
||||
@@ -62,7 +61,7 @@ class ModuleStructureExtractorImpl(
|
||||
private var currentModuleName: String? = null
|
||||
private var currentModuleTargetPlatform: TargetPlatform? = null
|
||||
private var currentModuleFrontendKind: FrontendKind<*>? = null
|
||||
private var currentModuleTargetBackend: TargetBackend? = null
|
||||
private var currentModuleBackendKind: BackendKind<*>? = null
|
||||
private var currentModuleLanguageVersionSettingsBuilder: LanguageVersionSettingsBuilder = initLanguageSettingsBuilder()
|
||||
private var dependenciesOfCurrentModule = mutableListOf<DependencyDescription>()
|
||||
private var filesOfCurrentModule = mutableListOf<TestFile>()
|
||||
@@ -172,7 +171,12 @@ class ModuleStructureExtractorImpl(
|
||||
}
|
||||
}
|
||||
ModuleStructureDirectives.TARGET_BACKEND_KIND -> {
|
||||
currentModuleTargetBackend = values.single() as TargetBackend
|
||||
val name = values.singleOrNull() as? String ?: assertions.fail {
|
||||
"Target backend specified incorrectly\nUsage: ${directive.description}"
|
||||
}
|
||||
currentModuleBackendKind = BackendKinds.fromString(name) ?: assertions.fail {
|
||||
"Unknown backend: $name"
|
||||
}
|
||||
}
|
||||
ModuleStructureDirectives.FILE -> {
|
||||
if (currentFileName != null) {
|
||||
@@ -211,8 +215,8 @@ class ModuleStructureExtractorImpl(
|
||||
val testModule = TestModule(
|
||||
name = moduleName,
|
||||
targetPlatform = currentModuleTargetPlatform ?: parseModulePlatformByName(moduleName) ?: defaultsProvider.defaultPlatform,
|
||||
targetBackend = currentModuleTargetBackend ?: defaultsProvider.defaultTargetBackend,
|
||||
frontendKind = currentModuleFrontendKind ?: defaultsProvider.defaultFrontend,
|
||||
backendKind = currentModuleBackendKind ?: defaultsProvider.defaultBackend,
|
||||
files = filesOfCurrentModule,
|
||||
dependencies = dependenciesOfCurrentModule,
|
||||
directives = moduleDirectives,
|
||||
@@ -267,8 +271,8 @@ class ModuleStructureExtractorImpl(
|
||||
firstFileInModule = true
|
||||
currentModuleName = null
|
||||
currentModuleTargetPlatform = null
|
||||
currentModuleTargetBackend = null
|
||||
currentModuleFrontendKind = null
|
||||
currentModuleBackendKind = null
|
||||
currentModuleLanguageVersionSettingsBuilder = initLanguageSettingsBuilder()
|
||||
filesOfCurrentModule = mutableListOf()
|
||||
dependenciesOfCurrentModule = mutableListOf()
|
||||
|
||||
Reference in New Issue
Block a user