[Test] Save TargetBackend instead of BackendKind in TestModule
This commit is contained in:
committed by
TeamCityServer
parent
3c2079c926
commit
d547ce7c42
@@ -6,14 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.test
|
package org.jetbrains.kotlin.test
|
||||||
|
|
||||||
import com.intellij.openapi.Disposable
|
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.DirectivesContainer
|
||||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||||
import org.jetbrains.kotlin.test.model.*
|
import org.jetbrains.kotlin.test.model.*
|
||||||
import org.jetbrains.kotlin.test.services.MetaTestConfigurator
|
import org.jetbrains.kotlin.test.services.MetaTestConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.ModuleStructureExtractor
|
import org.jetbrains.kotlin.test.services.ModuleStructureExtractor
|
||||||
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
|
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
|
||||||
typealias Constructor<T> = (TestServices) -> T
|
typealias Constructor<T> = (TestServices) -> T
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class TestRunner(private val testConfiguration: TestConfiguration) {
|
|||||||
var failedException: Throwable? = null
|
var failedException: Throwable? = null
|
||||||
try {
|
try {
|
||||||
for (module in modules) {
|
for (module in modules) {
|
||||||
processModule(module, dependencyProvider, moduleStructure)
|
processModule(services, module, dependencyProvider, moduleStructure)
|
||||||
}
|
}
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
failedException = e
|
failedException = e
|
||||||
@@ -87,6 +87,7 @@ class TestRunner(private val testConfiguration: TestConfiguration) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun processModule(
|
private fun processModule(
|
||||||
|
services: TestServices,
|
||||||
module: TestModule,
|
module: TestModule,
|
||||||
dependencyProvider: DependencyProviderImpl,
|
dependencyProvider: DependencyProviderImpl,
|
||||||
moduleStructure: TestModuleStructure
|
moduleStructure: TestModuleStructure
|
||||||
@@ -105,7 +106,7 @@ class TestRunner(private val testConfiguration: TestConfiguration) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val backendKind = module.backendKind
|
val backendKind = services.backendKindExtractor.backendKind(module.targetBackend)
|
||||||
if (!backendKind.shouldRunAnalysis) return
|
if (!backendKind.shouldRunAnalysis) return
|
||||||
|
|
||||||
val backendInputInfo = testConfiguration.getFacade(frontendKind, backendKind)
|
val backendInputInfo = testConfiguration.getFacade(frontendKind, backendKind)
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.test.directives
|
package org.jetbrains.kotlin.test.directives
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||||
|
|
||||||
object ModuleStructureDirectives : SimpleDirectivesContainer() {
|
object ModuleStructureDirectives : SimpleDirectivesContainer() {
|
||||||
@@ -45,7 +46,7 @@ object ModuleStructureDirectives : SimpleDirectivesContainer() {
|
|||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
|
|
||||||
val TARGET_BACKEND_KIND by stringDirective(
|
val TARGET_BACKEND_KIND by enumDirective<TargetBackend>(
|
||||||
"""
|
"""
|
||||||
Usage: // TARGET_BACKEND: {Backend}
|
Usage: // TARGET_BACKEND: {Backend}
|
||||||
Declares backend for analyzing current module
|
Declares backend for analyzing current module
|
||||||
|
|||||||
@@ -7,14 +7,15 @@ package org.jetbrains.kotlin.test.model
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
data class TestModule(
|
data class TestModule(
|
||||||
val name: String,
|
val name: String,
|
||||||
val targetPlatform: TargetPlatform,
|
val targetPlatform: TargetPlatform,
|
||||||
|
val targetBackend: TargetBackend?,
|
||||||
val frontendKind: FrontendKind<*>,
|
val frontendKind: FrontendKind<*>,
|
||||||
val backendKind: BackendKind<*>,
|
|
||||||
val files: List<TestFile>,
|
val files: List<TestFile>,
|
||||||
val dependencies: List<DependencyDescription>,
|
val dependencies: List<DependencyDescription>,
|
||||||
val directives: RegisteredDirectives,
|
val directives: RegisteredDirectives,
|
||||||
|
|||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* 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.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.builders.LanguageVersionSettingsBuilder
|
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.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKind
|
import org.jetbrains.kotlin.test.model.FrontendKind
|
||||||
|
|
||||||
@@ -18,11 +18,11 @@ import org.jetbrains.kotlin.test.model.FrontendKind
|
|||||||
* - default libraries
|
* - default libraries
|
||||||
*/
|
*/
|
||||||
class DefaultsProvider(
|
class DefaultsProvider(
|
||||||
val defaultBackend: BackendKind<*>,
|
|
||||||
val defaultFrontend: FrontendKind<*>,
|
val defaultFrontend: FrontendKind<*>,
|
||||||
val defaultLanguageSettings: LanguageVersionSettings,
|
val defaultLanguageSettings: LanguageVersionSettings,
|
||||||
private val defaultLanguageSettingsBuilder: LanguageVersionSettingsBuilder,
|
private val defaultLanguageSettingsBuilder: LanguageVersionSettingsBuilder,
|
||||||
val defaultPlatform: TargetPlatform,
|
val defaultPlatform: TargetPlatform,
|
||||||
|
val defaultTargetBackend: TargetBackend?,
|
||||||
val defaultDependencyKind: DependencyKind
|
val defaultDependencyKind: DependencyKind
|
||||||
) : TestService {
|
) : TestService {
|
||||||
fun newLanguageSettingsBuilder(): LanguageVersionSettingsBuilder {
|
fun newLanguageSettingsBuilder(): LanguageVersionSettingsBuilder {
|
||||||
|
|||||||
+1
-20
@@ -5,14 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.test.backend
|
package org.jetbrains.kotlin.test.backend
|
||||||
|
|
||||||
import org.jetbrains.kotlin.platform.js.isJs
|
|
||||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||||
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
||||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
import org.jetbrains.kotlin.test.services.moduleStructure
|
import org.jetbrains.kotlin.test.services.moduleStructure
|
||||||
import org.jetbrains.kotlin.test.util.joinToArrayString
|
import org.jetbrains.kotlin.test.util.joinToArrayString
|
||||||
@@ -25,7 +21,7 @@ class BlackBoxCodegenSuppressor(testServices: TestServices) : AfterAnalysisCheck
|
|||||||
val moduleStructure = testServices.moduleStructure
|
val moduleStructure = testServices.moduleStructure
|
||||||
val ignoredBackends = moduleStructure.modules.flatMap { it.directives[CodegenTestDirectives.IGNORE_BACKEND] }
|
val ignoredBackends = moduleStructure.modules.flatMap { it.directives[CodegenTestDirectives.IGNORE_BACKEND] }
|
||||||
if (ignoredBackends.isEmpty()) return failedAssertions
|
if (ignoredBackends.isEmpty()) return failedAssertions
|
||||||
val targetBackends = moduleStructure.modules.flatMap { it.targetBackends }
|
val targetBackends = moduleStructure.modules.map { it.targetBackend }
|
||||||
val matchedBackend = ignoredBackends.intersect(targetBackends)
|
val matchedBackend = ignoredBackends.intersect(targetBackends)
|
||||||
if (ignoredBackends.contains(TargetBackend.ANY)) {
|
if (ignoredBackends.contains(TargetBackend.ANY)) {
|
||||||
return processAssertions(failedAssertions)
|
return processAssertions(failedAssertions)
|
||||||
@@ -50,19 +46,4 @@ class BlackBoxCodegenSuppressor(testServices: TestServices) : AfterAnalysisCheck
|
|||||||
listOf(AssertionError(message))
|
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.config.LanguageVersionSettingsImpl
|
||||||
import org.jetbrains.kotlin.fir.PrivateForInline
|
import org.jetbrains.kotlin.fir.PrivateForInline
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
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.DefaultsDsl
|
||||||
import org.jetbrains.kotlin.test.services.DefaultsProvider
|
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.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKind
|
import org.jetbrains.kotlin.test.model.FrontendKind
|
||||||
|
|
||||||
@DefaultsDsl
|
@DefaultsDsl
|
||||||
class DefaultsProviderBuilder {
|
class DefaultsProviderBuilder {
|
||||||
lateinit var backend: BackendKind<*>
|
|
||||||
lateinit var frontend: FrontendKind<*>
|
lateinit var frontend: FrontendKind<*>
|
||||||
|
var targetBackend: TargetBackend? = null
|
||||||
lateinit var targetPlatform: TargetPlatform
|
lateinit var targetPlatform: TargetPlatform
|
||||||
lateinit var dependencyKind: DependencyKind
|
lateinit var dependencyKind: DependencyKind
|
||||||
|
|
||||||
@@ -40,11 +40,11 @@ class DefaultsProviderBuilder {
|
|||||||
@OptIn(PrivateForInline::class)
|
@OptIn(PrivateForInline::class)
|
||||||
fun build(): DefaultsProvider {
|
fun build(): DefaultsProvider {
|
||||||
return DefaultsProvider(
|
return DefaultsProvider(
|
||||||
backend,
|
|
||||||
frontend,
|
frontend,
|
||||||
languageVersionSettings ?: LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE),
|
languageVersionSettings ?: LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE),
|
||||||
languageVersionSettingsBuilder ?: LanguageVersionSettingsBuilder(),
|
languageVersionSettingsBuilder ?: LanguageVersionSettingsBuilder(),
|
||||||
targetPlatform,
|
targetPlatform,
|
||||||
|
targetBackend,
|
||||||
dependencyKind
|
dependencyKind
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
-2
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHan
|
|||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.FirTestDataConsistencyHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.FirTestDataConsistencyHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
||||||
import org.jetbrains.kotlin.test.model.BackendKind
|
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||||
@@ -33,7 +32,6 @@ abstract class AbstractDiagnosticTest : AbstractKotlinCompilerTest() {
|
|||||||
override fun TestConfigurationBuilder.configuration() {
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
globalDefaults {
|
globalDefaults {
|
||||||
frontend = FrontendKinds.ClassicFrontend
|
frontend = FrontendKinds.ClassicFrontend
|
||||||
backend = BackendKind.NoBackend
|
|
||||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||||
dependencyKind = DependencyKind.Source
|
dependencyKind = DependencyKind.Source
|
||||||
}
|
}
|
||||||
|
|||||||
-2
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
|
|||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
||||||
import org.jetbrains.kotlin.test.model.BackendKind
|
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||||
@@ -22,7 +21,6 @@ abstract class AbstractDiagnosticsNativeTest : AbstractKotlinCompilerTest() {
|
|||||||
override fun TestConfigurationBuilder.configuration() {
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
globalDefaults {
|
globalDefaults {
|
||||||
frontend = FrontendKinds.ClassicFrontend
|
frontend = FrontendKinds.ClassicFrontend
|
||||||
backend = BackendKind.NoBackend
|
|
||||||
targetPlatform = NativePlatforms.unspecifiedNativePlatform
|
targetPlatform = NativePlatforms.unspecifiedNativePlatform
|
||||||
dependencyKind = DependencyKind.Source
|
dependencyKind = DependencyKind.Source
|
||||||
}
|
}
|
||||||
|
|||||||
-2
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHan
|
|||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.DynamicCallsDumpHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.DynamicCallsDumpHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
||||||
import org.jetbrains.kotlin.test.model.BackendKind
|
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||||
@@ -24,7 +23,6 @@ abstract class AbstractDiagnosticsTestWithJsStdLib : AbstractKotlinCompilerTest(
|
|||||||
override fun TestConfigurationBuilder.configuration() {
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
globalDefaults {
|
globalDefaults {
|
||||||
frontend = FrontendKinds.ClassicFrontend
|
frontend = FrontendKinds.ClassicFrontend
|
||||||
backend = BackendKind.NoBackend
|
|
||||||
targetPlatform = JsPlatforms.defaultJsPlatform
|
targetPlatform = JsPlatforms.defaultJsPlatform
|
||||||
dependencyKind = DependencyKind.Source
|
dependencyKind = DependencyKind.Source
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-8
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.test.runners
|
package org.jetbrains.kotlin.test.runners
|
||||||
|
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
|
import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
|
||||||
import org.jetbrains.kotlin.test.backend.handlers.JvmBackendDiagnosticsHandler
|
import org.jetbrains.kotlin.test.backend.handlers.JvmBackendDiagnosticsHandler
|
||||||
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
|
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
|
||||||
@@ -17,8 +18,6 @@ import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
|
|||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
||||||
import org.jetbrains.kotlin.test.model.BackendKind
|
|
||||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||||
@@ -26,12 +25,12 @@ import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
|
|||||||
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
||||||
|
|
||||||
abstract class AbstractDiagnosticsTestWithJvmBackend : AbstractKotlinCompilerTest() {
|
abstract class AbstractDiagnosticsTestWithJvmBackend : AbstractKotlinCompilerTest() {
|
||||||
abstract val targetBackendKind: BackendKind<*>
|
abstract val targetBackend: TargetBackend
|
||||||
|
|
||||||
override fun TestConfigurationBuilder.configuration() {
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
globalDefaults {
|
globalDefaults {
|
||||||
frontend = FrontendKinds.ClassicFrontend
|
frontend = FrontendKinds.ClassicFrontend
|
||||||
backend = targetBackendKind
|
targetBackend = this@AbstractDiagnosticsTestWithJvmBackend.targetBackend
|
||||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||||
dependencyKind = DependencyKind.Binary
|
dependencyKind = DependencyKind.Binary
|
||||||
}
|
}
|
||||||
@@ -74,11 +73,11 @@ abstract class AbstractDiagnosticsTestWithJvmBackend : AbstractKotlinCompilerTes
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class AbstractDiagnosticsTestWithOldJvmBackend : AbstractDiagnosticsTestWithJvmBackend() {
|
abstract class AbstractDiagnosticsTestWithOldJvmBackend : AbstractDiagnosticsTestWithJvmBackend() {
|
||||||
override val targetBackendKind: BackendKind<*>
|
override val targetBackend: TargetBackend
|
||||||
get() = BackendKinds.ClassicBackend
|
get() = TargetBackend.JVM_OLD
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class AbstractDiagnosticsTestWithJvmIrBackend : AbstractDiagnosticsTestWithJvmBackend() {
|
abstract class AbstractDiagnosticsTestWithJvmIrBackend : AbstractDiagnosticsTestWithJvmBackend() {
|
||||||
override val targetBackendKind: BackendKind<*>
|
override val targetBackend: TargetBackend
|
||||||
get() = BackendKinds.IrBackend
|
get() = TargetBackend.JVM_IR
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-5
@@ -12,12 +12,12 @@ import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.COMPARE_WIT
|
|||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
|
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
|
||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE
|
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE
|
||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.WITH_EXTENDED_CHECKERS
|
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.WITH_EXTENDED_CHECKERS
|
||||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.JDK_KIND
|
||||||
|
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_REFLECT
|
||||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_STDLIB
|
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_STDLIB
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
|
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.*
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.*
|
||||||
import org.jetbrains.kotlin.test.model.BackendKind
|
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||||
@@ -29,7 +29,6 @@ abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() {
|
|||||||
override fun TestConfigurationBuilder.configuration() {
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
globalDefaults {
|
globalDefaults {
|
||||||
frontend = FrontendKinds.FIR
|
frontend = FrontendKinds.FIR
|
||||||
backend = BackendKind.NoBackend
|
|
||||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||||
dependencyKind = DependencyKind.Source
|
dependencyKind = DependencyKind.Source
|
||||||
}
|
}
|
||||||
@@ -84,9 +83,9 @@ abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() {
|
|||||||
|
|
||||||
forTestsMatching("compiler/testData/diagnostics/tests/testsWithJava15/*") {
|
forTestsMatching("compiler/testData/diagnostics/tests/testsWithJava15/*") {
|
||||||
defaultDirectives {
|
defaultDirectives {
|
||||||
JvmEnvironmentConfigurationDirectives.JDK_KIND with TestJdkKind.FULL_JDK_15
|
JDK_KIND with TestJdkKind.FULL_JDK_15
|
||||||
+WITH_STDLIB
|
+WITH_STDLIB
|
||||||
+JvmEnvironmentConfigurationDirectives.WITH_REFLECT
|
+WITH_REFLECT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -34,7 +34,6 @@ abstract class AbstractForeignAnnotationsTestBase : AbstractKotlinCompilerTest()
|
|||||||
override fun TestConfigurationBuilder.configuration() {
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
globalDefaults {
|
globalDefaults {
|
||||||
frontend = FrontendKinds.ClassicFrontend
|
frontend = FrontendKinds.ClassicFrontend
|
||||||
backend = BackendKind.NoBackend
|
|
||||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||||
dependencyKind = DependencyKind.Source
|
dependencyKind = DependencyKind.Source
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -14,9 +14,11 @@ import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
|||||||
import org.jetbrains.kotlin.test.preprocessors.MetaInfosCleanupPreprocessor
|
import org.jetbrains.kotlin.test.preprocessors.MetaInfosCleanupPreprocessor
|
||||||
import org.jetbrains.kotlin.test.services.*
|
import org.jetbrains.kotlin.test.services.*
|
||||||
import org.jetbrains.kotlin.test.services.impl.TemporaryDirectoryManagerImpl
|
import org.jetbrains.kotlin.test.services.impl.TemporaryDirectoryManagerImpl
|
||||||
|
import org.jetbrains.kotlin.test.services.BackendKindExtractor
|
||||||
import org.jetbrains.kotlin.test.services.JUnit5Assertions
|
import org.jetbrains.kotlin.test.services.JUnit5Assertions
|
||||||
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
|
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
|
||||||
import org.jetbrains.kotlin.test.services.KotlinTestInfo
|
import org.jetbrains.kotlin.test.services.KotlinTestInfo
|
||||||
|
import org.jetbrains.kotlin.test.services.impl.BackendKindExtractorImpl
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||||
import org.jetbrains.kotlin.types.FlexibleTypeImpl
|
import org.jetbrains.kotlin.types.FlexibleTypeImpl
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
@@ -37,6 +39,7 @@ abstract class AbstractKotlinCompilerTest {
|
|||||||
private val configuration: TestConfigurationBuilder.() -> Unit = {
|
private val configuration: TestConfigurationBuilder.() -> Unit = {
|
||||||
assertions = JUnit5Assertions
|
assertions = JUnit5Assertions
|
||||||
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
|
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
|
||||||
|
useAdditionalService<BackendKindExtractor>(::BackendKindExtractorImpl)
|
||||||
useSourcePreprocessor(*defaultPreprocessors.toTypedArray())
|
useSourcePreprocessor(*defaultPreprocessors.toTypedArray())
|
||||||
useDirectives(*defaultDirectiveContainers.toTypedArray())
|
useDirectives(*defaultDirectiveContainers.toTypedArray())
|
||||||
configureDebugFlags()
|
configureDebugFlags()
|
||||||
|
|||||||
+1
-1
@@ -104,7 +104,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig
|
|||||||
configuration.put(JVMConfigurationKeys.ENABLE_JVM_PREVIEW, true)
|
configuration.put(JVMConfigurationKeys.ENABLE_JVM_PREVIEW, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
val isIr = module.backendKind == BackendKinds.IrBackend
|
val isIr = module.targetBackend?.isIR == true
|
||||||
configuration.put(JVMConfigurationKeys.IR, isIr)
|
configuration.put(JVMConfigurationKeys.IR, isIr)
|
||||||
|
|
||||||
if (JvmEnvironmentConfigurationDirectives.SKIP_JAVA_SOURCES !in module.directives) {
|
if (JvmEnvironmentConfigurationDirectives.SKIP_JAVA_SOURCES !in module.directives) {
|
||||||
|
|||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
-9
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.platform.js.JsPlatforms
|
|||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
||||||
import org.jetbrains.kotlin.test.Assertions
|
import org.jetbrains.kotlin.test.Assertions
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.builders.LanguageVersionSettingsBuilder
|
import org.jetbrains.kotlin.test.builders.LanguageVersionSettingsBuilder
|
||||||
import org.jetbrains.kotlin.test.directives.ModuleStructureDirectives
|
import org.jetbrains.kotlin.test.directives.ModuleStructureDirectives
|
||||||
import org.jetbrains.kotlin.test.directives.model.ComposedRegisteredDirectives
|
import org.jetbrains.kotlin.test.directives.model.ComposedRegisteredDirectives
|
||||||
@@ -62,7 +63,7 @@ class ModuleStructureExtractorImpl(
|
|||||||
private var currentModuleName: String? = null
|
private var currentModuleName: String? = null
|
||||||
private var currentModuleTargetPlatform: TargetPlatform? = null
|
private var currentModuleTargetPlatform: TargetPlatform? = null
|
||||||
private var currentModuleFrontendKind: FrontendKind<*>? = null
|
private var currentModuleFrontendKind: FrontendKind<*>? = null
|
||||||
private var currentModuleBackendKind: BackendKind<*>? = null
|
private var currentModuleTargetBackend: TargetBackend? = null
|
||||||
private var currentModuleLanguageVersionSettingsBuilder: LanguageVersionSettingsBuilder = initLanguageSettingsBuilder()
|
private var currentModuleLanguageVersionSettingsBuilder: LanguageVersionSettingsBuilder = initLanguageSettingsBuilder()
|
||||||
private var dependenciesOfCurrentModule = mutableListOf<DependencyDescription>()
|
private var dependenciesOfCurrentModule = mutableListOf<DependencyDescription>()
|
||||||
private var filesOfCurrentModule = mutableListOf<TestFile>()
|
private var filesOfCurrentModule = mutableListOf<TestFile>()
|
||||||
@@ -172,12 +173,7 @@ class ModuleStructureExtractorImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ModuleStructureDirectives.TARGET_BACKEND_KIND -> {
|
ModuleStructureDirectives.TARGET_BACKEND_KIND -> {
|
||||||
val name = values.singleOrNull() as? String ?: assertions.fail {
|
currentModuleTargetBackend = values.single() as TargetBackend
|
||||||
"Target backend specified incorrectly\nUsage: ${directive.description}"
|
|
||||||
}
|
|
||||||
currentModuleBackendKind = BackendKinds.fromString(name) ?: assertions.fail {
|
|
||||||
"Unknown backend: $name"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ModuleStructureDirectives.FILE -> {
|
ModuleStructureDirectives.FILE -> {
|
||||||
if (currentFileName != null) {
|
if (currentFileName != null) {
|
||||||
@@ -216,8 +212,8 @@ class ModuleStructureExtractorImpl(
|
|||||||
val testModule = TestModule(
|
val testModule = TestModule(
|
||||||
name = moduleName,
|
name = moduleName,
|
||||||
targetPlatform = currentModuleTargetPlatform ?: parseModulePlatformByName(moduleName) ?: defaultsProvider.defaultPlatform,
|
targetPlatform = currentModuleTargetPlatform ?: parseModulePlatformByName(moduleName) ?: defaultsProvider.defaultPlatform,
|
||||||
|
targetBackend = currentModuleTargetBackend ?: defaultsProvider.defaultTargetBackend,
|
||||||
frontendKind = currentModuleFrontendKind ?: defaultsProvider.defaultFrontend,
|
frontendKind = currentModuleFrontendKind ?: defaultsProvider.defaultFrontend,
|
||||||
backendKind = currentModuleBackendKind ?: defaultsProvider.defaultBackend,
|
|
||||||
files = filesOfCurrentModule,
|
files = filesOfCurrentModule,
|
||||||
dependencies = dependenciesOfCurrentModule,
|
dependencies = dependenciesOfCurrentModule,
|
||||||
directives = moduleDirectives,
|
directives = moduleDirectives,
|
||||||
@@ -272,8 +268,8 @@ class ModuleStructureExtractorImpl(
|
|||||||
firstFileInModule = true
|
firstFileInModule = true
|
||||||
currentModuleName = null
|
currentModuleName = null
|
||||||
currentModuleTargetPlatform = null
|
currentModuleTargetPlatform = null
|
||||||
|
currentModuleTargetBackend = null
|
||||||
currentModuleFrontendKind = null
|
currentModuleFrontendKind = null
|
||||||
currentModuleBackendKind = null
|
|
||||||
currentModuleLanguageVersionSettingsBuilder = initLanguageSettingsBuilder()
|
currentModuleLanguageVersionSettingsBuilder = initLanguageSettingsBuilder()
|
||||||
filesOfCurrentModule = mutableListOf()
|
filesOfCurrentModule = mutableListOf()
|
||||||
dependenciesOfCurrentModule = mutableListOf()
|
dependenciesOfCurrentModule = mutableListOf()
|
||||||
|
|||||||
Reference in New Issue
Block a user