Propagate language version settings into IR type translator
This commit is contained in:
@@ -32,6 +32,7 @@ class IrBuiltIns(
|
||||
private val typeTranslator: TypeTranslator,
|
||||
outerSymbolTable: SymbolTable? = null
|
||||
) {
|
||||
val languageVersionSettings = typeTranslator.languageVersionSettings
|
||||
|
||||
private val builtInsModule = builtIns.builtInsModule
|
||||
|
||||
@@ -39,7 +40,8 @@ class IrBuiltIns(
|
||||
val irBuiltInsExternalPackageFragment = IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(packageFragment))
|
||||
|
||||
private val symbolTable = outerSymbolTable ?: SymbolTable()
|
||||
private val stubBuilder = DeclarationStubGenerator(builtInsModule, symbolTable, IrDeclarationOrigin.IR_BUILTINS_STUB)
|
||||
private val stubBuilder =
|
||||
DeclarationStubGenerator(builtInsModule, symbolTable, IrDeclarationOrigin.IR_BUILTINS_STUB, languageVersionSettings)
|
||||
|
||||
private fun ClassDescriptor.toIrSymbol() = symbolTable.referenceClass(this)
|
||||
private fun KotlinType.toIrType() = typeTranslator.translateType(this)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.util
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
@@ -34,9 +35,10 @@ import org.jetbrains.kotlin.types.KotlinType
|
||||
class DeclarationStubGenerator(
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
val symbolTable: SymbolTable,
|
||||
val origin: IrDeclarationOrigin
|
||||
val origin: IrDeclarationOrigin,
|
||||
val languageVersionSettings: LanguageVersionSettings
|
||||
) {
|
||||
private val typeTranslator = TypeTranslator(symbolTable)
|
||||
private val typeTranslator = TypeTranslator(symbolTable, languageVersionSettings)
|
||||
private val constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable)
|
||||
|
||||
init {
|
||||
|
||||
+3
-1
@@ -29,7 +29,9 @@ class ExternalDependenciesGenerator(
|
||||
val symbolTable: SymbolTable,
|
||||
val irBuiltIns: IrBuiltIns
|
||||
) {
|
||||
private val stubGenerator = DeclarationStubGenerator(moduleDescriptor, symbolTable, IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB)
|
||||
private val stubGenerator = DeclarationStubGenerator(
|
||||
moduleDescriptor, symbolTable, IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB, irBuiltIns.languageVersionSettings
|
||||
)
|
||||
|
||||
fun generateUnboundSymbolsAsDependencies(irModule: IrModuleFragment) {
|
||||
DependencyGenerationTask(irModule).run()
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.util
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
@@ -20,7 +22,8 @@ import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.typesApproximation.approximateCapturedTypes
|
||||
|
||||
class TypeTranslator(
|
||||
private val symbolTable: SymbolTable
|
||||
private val symbolTable: SymbolTable,
|
||||
val languageVersionSettings: LanguageVersionSettings
|
||||
) {
|
||||
|
||||
private val typeParametersResolver = ScopedTypeParametersResolver()
|
||||
@@ -50,7 +53,7 @@ class TypeTranslator(
|
||||
|
||||
private fun translateType(ktType0: KotlinType, variance: Variance): IrTypeProjection {
|
||||
// TODO "old" JVM BE does this for reified type arguments. Is it ok for arbitrary subexpressions?
|
||||
|
||||
|
||||
val ktTypeUpper =
|
||||
if (ktType0.constructor.isDenotable)
|
||||
ktType0
|
||||
|
||||
Reference in New Issue
Block a user