[IR] Replace reference* with toIrSymbol in IrBuiltinsOverDescriptors

This change is a minor refactoring that introduces `toIrSymbol`
method for function and property descriptors, like it is done for
class descriptor.
This commit is contained in:
Ivan Kylchik
2023-08-02 18:52:50 +02:00
committed by Space Team
parent 4da8b0850e
commit 782d5e86f6
@@ -96,6 +96,14 @@ class IrBuiltInsOverDescriptors(
return symbolTable.descriptorExtension.referenceClass(this)
}
private fun FunctionDescriptor.toIrSymbol(): IrSimpleFunctionSymbol {
return symbolTable.descriptorExtension.referenceSimpleFunction(this)
}
private fun PropertyDescriptor.toIrSymbol(): IrPropertySymbol {
return symbolTable.descriptorExtension.referenceProperty(this)
}
private fun KotlinType.toIrType() = typeTranslator.translateType(this)
private fun defineOperator(
@@ -464,7 +472,7 @@ class IrBuiltInsOverDescriptors(
val booleanNot =
builtIns.boolean.unsubstitutedMemberScope.getContributedFunctions(Name.identifier("not"), NoLookupLocation.FROM_BACKEND).single()
override val booleanNotSymbol = symbolTable.descriptorExtension.referenceSimpleFunction(booleanNot)
override val booleanNotSymbol = booleanNot.toIrSymbol()
override val eqeqeqSymbol = defineOperator(BuiltInOperatorNames.EQEQEQ, booleanType, listOf(anyNType, anyNType))
override val eqeqSymbol = defineOperator(BuiltInOperatorNames.EQEQ, booleanType, listOf(anyNType, anyNType), isIntrinsicConst = true)
@@ -489,17 +497,17 @@ class IrBuiltInsOverDescriptors(
override val intTimesSymbol: IrSimpleFunctionSymbol =
builtIns.int.unsubstitutedMemberScope.findFirstFunction("times") {
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
}.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
}.toIrSymbol()
override val intXorSymbol: IrSimpleFunctionSymbol =
builtIns.int.unsubstitutedMemberScope.findFirstFunction("xor") {
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
}.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
}.toIrSymbol()
override val intPlusSymbol: IrSimpleFunctionSymbol =
builtIns.int.unsubstitutedMemberScope.findFirstFunction("plus") {
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
}.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
}.toIrSymbol()
override val arrayOf = findFunctions(Name.identifier("arrayOf")).first {
it.descriptor.extensionReceiverParameter == null && it.descriptor.dispatchReceiverParameter == null &&
@@ -520,27 +528,27 @@ class IrBuiltInsOverDescriptors(
override fun findFunctions(name: Name, vararg packageNameSegments: String): Iterable<IrSimpleFunctionSymbol> =
builtInsPackage(*packageNameSegments).getContributedFunctions(name, NoLookupLocation.FROM_BACKEND).map {
symbolTable.descriptorExtension.referenceSimpleFunction(it)
it.toIrSymbol()
}
override fun findFunctions(name: Name, packageFqName: FqName): Iterable<IrSimpleFunctionSymbol> =
builtIns.builtInsModule.getPackage(packageFqName).memberScope.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND).map {
symbolTable.descriptorExtension.referenceSimpleFunction(it)
it.toIrSymbol()
}
override fun findProperties(name: Name, packageFqName: FqName): Iterable<IrPropertySymbol> =
builtIns.builtInsModule.getPackage(packageFqName).memberScope.getContributedVariables(name, NoLookupLocation.FROM_BACKEND).map {
symbolTable.descriptorExtension.referenceProperty(it)
it.toIrSymbol()
}
override fun findClass(name: Name, vararg packageNameSegments: String): IrClassSymbol? =
(builtInsPackage(*packageNameSegments).getContributedClassifier(
name,
NoLookupLocation.FROM_BACKEND
) as? ClassDescriptor)?.let { symbolTable.descriptorExtension.referenceClass(it) }
) as? ClassDescriptor)?.toIrSymbol()
override fun findClass(name: Name, packageFqName: FqName): IrClassSymbol? =
findClassDescriptor(name, packageFqName)?.let { symbolTable.descriptorExtension.referenceClass(it) }
findClassDescriptor(name, packageFqName)?.toIrSymbol()
fun findClassDescriptor(name: Name, packageFqName: FqName): ClassDescriptor? =
builtIns.builtInsModule.getPackage(packageFqName).memberScope.getContributedClassifier(
@@ -551,7 +559,7 @@ class IrBuiltInsOverDescriptors(
override fun findBuiltInClassMemberFunctions(builtInClass: IrClassSymbol, name: Name): Iterable<IrSimpleFunctionSymbol> =
builtInClass.descriptor.unsubstitutedMemberScope
.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND)
.map { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
.map { it.toIrSymbol() }
private val binaryOperatorCache = mutableMapOf<Triple<Name, IrType, IrType>, IrSimpleFunctionSymbol>()
@@ -595,7 +603,7 @@ class IrBuiltInsOverDescriptors(
val result = mutableMapOf<T, IrSimpleFunctionSymbol>()
for (d in builtInsPackage(*packageNameSegments).getContributedFunctions(name, NoLookupLocation.FROM_BACKEND)) {
makeKey(d)?.let { key ->
result[key] = symbolTable.descriptorExtension.referenceSimpleFunction(d)
result[key] = d.toIrSymbol()
}
}
return result