IR: Refactor IrBuiltIns to abstract it from descriptors
This commit is contained in:
committed by
TeamCityServer
parent
25d2e61a82
commit
dee0487185
@@ -14,11 +14,16 @@ import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
|
||||
import org.jetbrains.kotlin.ir.BuiltInOperatorNames
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltInsOverDescriptors
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
||||
import org.jetbrains.kotlin.ir.types.impl.originalKotlinType
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi2ir.generators.TypeTranslatorImpl
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
@@ -165,7 +170,7 @@ private data class Operation(
|
||||
val receiver = castValueParenthesized("a", typeA)
|
||||
println(name)
|
||||
return when {
|
||||
name == IrBuiltIns.OperatorNames.EQEQEQ && parameterTypes.all { it == "Any?" } ->
|
||||
name == BuiltInOperatorNames.EQEQEQ && parameterTypes.all { it == "Any?" } ->
|
||||
"if (a is Proxy && b is Proxy) a.state === b.state else a === b"
|
||||
customExpression != null -> customExpression
|
||||
else -> buildString {
|
||||
@@ -244,19 +249,20 @@ private fun getBinaryIrOperationMap(irBuiltIns: IrBuiltIns): List<Operation> {
|
||||
|
||||
private fun getIrMethodSymbolByName(methodName: String): String {
|
||||
return when (methodName) {
|
||||
IrBuiltIns.OperatorNames.LESS -> "<"
|
||||
IrBuiltIns.OperatorNames.LESS_OR_EQUAL -> "<="
|
||||
IrBuiltIns.OperatorNames.GREATER -> ">"
|
||||
IrBuiltIns.OperatorNames.GREATER_OR_EQUAL -> ">="
|
||||
IrBuiltIns.OperatorNames.EQEQ -> "=="
|
||||
IrBuiltIns.OperatorNames.EQEQEQ -> "==="
|
||||
IrBuiltIns.OperatorNames.IEEE754_EQUALS -> "=="
|
||||
IrBuiltIns.OperatorNames.ANDAND -> "&&"
|
||||
IrBuiltIns.OperatorNames.OROR -> "||"
|
||||
BuiltInOperatorNames.LESS -> "<"
|
||||
BuiltInOperatorNames.LESS_OR_EQUAL -> "<="
|
||||
BuiltInOperatorNames.GREATER -> ">"
|
||||
BuiltInOperatorNames.GREATER_OR_EQUAL -> ">="
|
||||
BuiltInOperatorNames.EQEQ -> "=="
|
||||
BuiltInOperatorNames.EQEQEQ -> "==="
|
||||
BuiltInOperatorNames.IEEE754_EQUALS -> "=="
|
||||
BuiltInOperatorNames.ANDAND -> "&&"
|
||||
BuiltInOperatorNames.OROR -> "||"
|
||||
else -> throw UnsupportedOperationException("Unknown ir operation \"$methodName\"")
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
private fun getIrBuiltIns(): IrBuiltIns {
|
||||
val languageSettings = LanguageVersionSettingsImpl(LanguageVersion.KOTLIN_1_3, ApiVersion.KOTLIN_1_3)
|
||||
|
||||
@@ -272,5 +278,5 @@ private fun getIrBuiltIns(): IrBuiltIns {
|
||||
}
|
||||
val symbolTable = SymbolTable(signaturer, IrFactoryImpl)
|
||||
val typeTranslator = TypeTranslatorImpl(symbolTable, languageSettings, moduleDescriptor)
|
||||
return IrBuiltIns(moduleDescriptor.builtIns, typeTranslator, symbolTable)
|
||||
return IrBuiltInsOverDescriptors(moduleDescriptor.builtIns, typeTranslator, symbolTable)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user