Propagate language version settings into IR type translator
This commit is contained in:
+10
-2
@@ -85,6 +85,8 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
val modules = createModules(groupedByModule, context.storageManager)
|
||||
val moduleBindings = HashMap<TestModule?, BindingContext>()
|
||||
|
||||
val languageVersionSettingsByModule = HashMap<TestModule?, LanguageVersionSettings>()
|
||||
|
||||
for ((testModule, testFilesInModule) in groupedByModule) {
|
||||
val ktFiles = getKtFiles(testFilesInModule, true)
|
||||
|
||||
@@ -98,6 +100,9 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
if (coroutinesPackage.contains("experimental")) LanguageVersion.KOTLIN_1_2 else LanguageVersion.KOTLIN_1_3
|
||||
)
|
||||
else loadLanguageVersionSettings(testFilesInModule)
|
||||
|
||||
languageVersionSettingsByModule[testModule] = languageVersionSettings
|
||||
|
||||
val moduleContext = context.withProject(project).withModule(oldModule)
|
||||
|
||||
val separateModules = groupedByModule.size == 1 && groupedByModule.keys.single() == null
|
||||
@@ -184,7 +189,9 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
exceptionFromLazyResolveLogValidation?.let { throw it }
|
||||
exceptionFromDynamicCallDescriptorsValidation?.let { throw it }
|
||||
|
||||
performAdditionalChecksAfterDiagnostics(testDataFile, files, groupedByModule, modules, moduleBindings)
|
||||
performAdditionalChecksAfterDiagnostics(
|
||||
testDataFile, files, groupedByModule, modules, moduleBindings, languageVersionSettingsByModule
|
||||
)
|
||||
}
|
||||
|
||||
protected open fun getExpectedDiagnosticsFile(testDataFile: File): File {
|
||||
@@ -212,7 +219,8 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
testFiles: List<TestFile>,
|
||||
moduleFiles: Map<TestModule?, List<TestFile>>,
|
||||
moduleDescriptors: Map<TestModule?, ModuleDescriptorImpl>,
|
||||
moduleBindings: Map<TestModule?, BindingContext>
|
||||
moduleBindings: Map<TestModule?, BindingContext>,
|
||||
languageVersionSettingsByModule: Map<TestModule?, LanguageVersionSettings>
|
||||
) {
|
||||
// To be overridden by diagnostic-like tests.
|
||||
}
|
||||
|
||||
@@ -108,6 +108,8 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
|
||||
}
|
||||
|
||||
class TestModule(val name: String) : Comparable<TestModule> {
|
||||
lateinit var languageVersionSettings: LanguageVersionSettings
|
||||
|
||||
private val dependencies = ArrayList<TestModule>()
|
||||
|
||||
fun getDependencies(): MutableList<TestModule> = dependencies
|
||||
|
||||
@@ -20,6 +20,8 @@ import junit.framework.TestCase
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.codegen.CodegenTestCase
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
@@ -88,7 +90,12 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
protected fun generateIrModule(ignoreErrors: Boolean = false, shouldGenerate: (KtFile) -> Boolean = { true }): IrModuleFragment {
|
||||
assert(myFiles != null) { "myFiles not initialized" }
|
||||
assert(myEnvironment != null) { "myEnvironment not initialized" }
|
||||
return generateIrModule(myFiles.psiFiles, myEnvironment, Psi2IrTranslator(Psi2IrConfiguration(ignoreErrors)), shouldGenerate)
|
||||
return generateIrModule(
|
||||
myFiles.psiFiles,
|
||||
myEnvironment,
|
||||
Psi2IrTranslator(myEnvironment.configuration.languageVersionSettings, Psi2IrConfiguration(ignoreErrors)),
|
||||
shouldGenerate
|
||||
)
|
||||
}
|
||||
|
||||
protected fun generateIrFilesAsSingleModule(testFiles: List<TestFile>, ignoreErrors: Boolean = false): Map<TestFile, IrFile> {
|
||||
@@ -133,9 +140,12 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
ktFiles: List<KtFile>,
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
bindingContext: BindingContext,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
ignoreErrors: Boolean = false
|
||||
) =
|
||||
generateIrModule(ktFiles, moduleDescriptor, bindingContext, Psi2IrTranslator(Psi2IrConfiguration(ignoreErrors)))
|
||||
generateIrModule(
|
||||
ktFiles, moduleDescriptor, bindingContext, Psi2IrTranslator(languageVersionSettings, Psi2IrConfiguration(ignoreErrors))
|
||||
)
|
||||
|
||||
fun generateIrModule(
|
||||
ktFiles: List<KtFile>,
|
||||
|
||||
+7
-2
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.ir
|
||||
|
||||
import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.util.dump
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
@@ -29,14 +30,18 @@ abstract class AbstractPsi2IrDiagnosticsTest : AbstractDiagnosticsTest() {
|
||||
testFiles: List<TestFile>,
|
||||
moduleFiles: Map<TestModule?, List<TestFile>>,
|
||||
moduleDescriptors: Map<TestModule?, ModuleDescriptorImpl>,
|
||||
moduleBindings: Map<TestModule?, BindingContext>
|
||||
moduleBindings: Map<TestModule?, BindingContext>,
|
||||
languageVersionSettingsByModule: Map<TestModule?, LanguageVersionSettings>
|
||||
) {
|
||||
val actualIrDump = StringBuilder()
|
||||
for (module in moduleFiles.keys) {
|
||||
val ktFiles = moduleFiles[module]?.mapNotNull { it.ktFile } ?: continue
|
||||
val moduleDescriptor = moduleDescriptors[module] ?: continue
|
||||
val moduleBindingContext = moduleBindings[module] ?: continue
|
||||
val irModule = AbstractIrGeneratorTestCase.generateIrModule(ktFiles, moduleDescriptor, moduleBindingContext, true)
|
||||
val languageVersionSettings = languageVersionSettingsByModule[module] ?: continue
|
||||
val irModule = AbstractIrGeneratorTestCase.generateIrModule(
|
||||
ktFiles, moduleDescriptor, moduleBindingContext, languageVersionSettings, true
|
||||
)
|
||||
actualIrDump.append(irModule.dump())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user