JVM_IR KT-42020 special IdSignature for some fake override members
This commit is contained in:
@@ -19,14 +19,19 @@ package org.jetbrains.kotlin.ir
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
|
||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
||||
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.idea.MainFunctionDetector
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
||||
import org.jetbrains.kotlin.ir.util.NameProvider
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
|
||||
@@ -36,11 +41,11 @@ import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||
import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions
|
||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils.getAnnotationsJar
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
@@ -95,7 +100,12 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
}
|
||||
|
||||
protected open fun doGenerateIrModule(psi2IrTranslator: Psi2IrTranslator): IrModuleFragment =
|
||||
generateIrModuleWithJvmResolve(myFiles.psiFiles, myEnvironment, psi2IrTranslator)
|
||||
generateIrModuleWithJvmResolve(
|
||||
myFiles.psiFiles,
|
||||
myEnvironment,
|
||||
psi2IrTranslator,
|
||||
myEnvironment.configuration.languageVersionSettings
|
||||
)
|
||||
|
||||
protected fun generateIrFilesAsSingleModule(testFiles: List<TestFile>, ignoreErrors: Boolean = false): Map<TestFile, IrFile> {
|
||||
val irModule = generateIrModule(ignoreErrors)
|
||||
@@ -118,22 +128,31 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
moduleDescriptors = emptyList(),
|
||||
friendModuleDescriptors = emptyList()
|
||||
),
|
||||
psi2ir, ktFilesToAnalyze, GeneratorExtensions()
|
||||
psi2ir, ktFilesToAnalyze, GeneratorExtensions(),
|
||||
createIdSignatureComposer = { IdSignatureDescriptor(JsManglerDesc) }
|
||||
)
|
||||
|
||||
fun generateIrModuleWithJvmResolve(
|
||||
ktFilesToAnalyze: List<KtFile>, environment: KotlinCoreEnvironment, psi2ir: Psi2IrTranslator
|
||||
): IrModuleFragment =
|
||||
generateIrModule(
|
||||
ktFilesToAnalyze: List<KtFile>,
|
||||
environment: KotlinCoreEnvironment,
|
||||
psi2ir: Psi2IrTranslator,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
): IrModuleFragment {
|
||||
return generateIrModule(
|
||||
JvmResolveUtil.analyze(ktFilesToAnalyze, environment), psi2ir, ktFilesToAnalyze,
|
||||
JvmGeneratorExtensions(generateFacades = false)
|
||||
JvmGeneratorExtensions(generateFacades = false),
|
||||
createIdSignatureComposer = { bindingContext ->
|
||||
JvmIdSignatureDescriptor(JvmManglerDesc(MainFunctionDetector(bindingContext, languageVersionSettings)))
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private fun generateIrModule(
|
||||
analysisResult: AnalysisResult,
|
||||
psi2ir: Psi2IrTranslator,
|
||||
ktFilesToAnalyze: List<KtFile>,
|
||||
generatorExtensions: GeneratorExtensions
|
||||
generatorExtensions: GeneratorExtensions,
|
||||
createIdSignatureComposer: (BindingContext) -> IdSignatureComposer
|
||||
): IrModuleFragment {
|
||||
val (bindingContext, moduleDescriptor) = analysisResult
|
||||
if (!psi2ir.configuration.ignoreErrors) {
|
||||
@@ -143,7 +162,8 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
val context = psi2ir.createGeneratorContext(
|
||||
moduleDescriptor,
|
||||
bindingContext,
|
||||
SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl, NameProvider.DEFAULT),
|
||||
// SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl, NameProvider.DEFAULT),
|
||||
SymbolTable(createIdSignatureComposer(bindingContext), IrFactoryImpl, NameProvider.DEFAULT),
|
||||
generatorExtensions
|
||||
)
|
||||
val irProviders = generateTypicalIrProviderList(
|
||||
|
||||
Reference in New Issue
Block a user