[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:
+19
-11
@@ -96,6 +96,14 @@ class IrBuiltInsOverDescriptors(
|
|||||||
return symbolTable.descriptorExtension.referenceClass(this)
|
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 KotlinType.toIrType() = typeTranslator.translateType(this)
|
||||||
|
|
||||||
private fun defineOperator(
|
private fun defineOperator(
|
||||||
@@ -464,7 +472,7 @@ class IrBuiltInsOverDescriptors(
|
|||||||
|
|
||||||
val booleanNot =
|
val booleanNot =
|
||||||
builtIns.boolean.unsubstitutedMemberScope.getContributedFunctions(Name.identifier("not"), NoLookupLocation.FROM_BACKEND).single()
|
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 eqeqeqSymbol = defineOperator(BuiltInOperatorNames.EQEQEQ, booleanType, listOf(anyNType, anyNType))
|
||||||
override val eqeqSymbol = defineOperator(BuiltInOperatorNames.EQEQ, booleanType, listOf(anyNType, anyNType), isIntrinsicConst = true)
|
override val eqeqSymbol = defineOperator(BuiltInOperatorNames.EQEQ, booleanType, listOf(anyNType, anyNType), isIntrinsicConst = true)
|
||||||
@@ -489,17 +497,17 @@ class IrBuiltInsOverDescriptors(
|
|||||||
override val intTimesSymbol: IrSimpleFunctionSymbol =
|
override val intTimesSymbol: IrSimpleFunctionSymbol =
|
||||||
builtIns.int.unsubstitutedMemberScope.findFirstFunction("times") {
|
builtIns.int.unsubstitutedMemberScope.findFirstFunction("times") {
|
||||||
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
|
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
|
||||||
}.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
|
}.toIrSymbol()
|
||||||
|
|
||||||
override val intXorSymbol: IrSimpleFunctionSymbol =
|
override val intXorSymbol: IrSimpleFunctionSymbol =
|
||||||
builtIns.int.unsubstitutedMemberScope.findFirstFunction("xor") {
|
builtIns.int.unsubstitutedMemberScope.findFirstFunction("xor") {
|
||||||
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
|
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
|
||||||
}.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
|
}.toIrSymbol()
|
||||||
|
|
||||||
override val intPlusSymbol: IrSimpleFunctionSymbol =
|
override val intPlusSymbol: IrSimpleFunctionSymbol =
|
||||||
builtIns.int.unsubstitutedMemberScope.findFirstFunction("plus") {
|
builtIns.int.unsubstitutedMemberScope.findFirstFunction("plus") {
|
||||||
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
|
KotlinTypeChecker.DEFAULT.equalTypes(it.valueParameters[0].type, int)
|
||||||
}.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
|
}.toIrSymbol()
|
||||||
|
|
||||||
override val arrayOf = findFunctions(Name.identifier("arrayOf")).first {
|
override val arrayOf = findFunctions(Name.identifier("arrayOf")).first {
|
||||||
it.descriptor.extensionReceiverParameter == null && it.descriptor.dispatchReceiverParameter == null &&
|
it.descriptor.extensionReceiverParameter == null && it.descriptor.dispatchReceiverParameter == null &&
|
||||||
@@ -520,27 +528,27 @@ class IrBuiltInsOverDescriptors(
|
|||||||
|
|
||||||
override fun findFunctions(name: Name, vararg packageNameSegments: String): Iterable<IrSimpleFunctionSymbol> =
|
override fun findFunctions(name: Name, vararg packageNameSegments: String): Iterable<IrSimpleFunctionSymbol> =
|
||||||
builtInsPackage(*packageNameSegments).getContributedFunctions(name, NoLookupLocation.FROM_BACKEND).map {
|
builtInsPackage(*packageNameSegments).getContributedFunctions(name, NoLookupLocation.FROM_BACKEND).map {
|
||||||
symbolTable.descriptorExtension.referenceSimpleFunction(it)
|
it.toIrSymbol()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun findFunctions(name: Name, packageFqName: FqName): Iterable<IrSimpleFunctionSymbol> =
|
override fun findFunctions(name: Name, packageFqName: FqName): Iterable<IrSimpleFunctionSymbol> =
|
||||||
builtIns.builtInsModule.getPackage(packageFqName).memberScope.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND).map {
|
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> =
|
override fun findProperties(name: Name, packageFqName: FqName): Iterable<IrPropertySymbol> =
|
||||||
builtIns.builtInsModule.getPackage(packageFqName).memberScope.getContributedVariables(name, NoLookupLocation.FROM_BACKEND).map {
|
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? =
|
override fun findClass(name: Name, vararg packageNameSegments: String): IrClassSymbol? =
|
||||||
(builtInsPackage(*packageNameSegments).getContributedClassifier(
|
(builtInsPackage(*packageNameSegments).getContributedClassifier(
|
||||||
name,
|
name,
|
||||||
NoLookupLocation.FROM_BACKEND
|
NoLookupLocation.FROM_BACKEND
|
||||||
) as? ClassDescriptor)?.let { symbolTable.descriptorExtension.referenceClass(it) }
|
) as? ClassDescriptor)?.toIrSymbol()
|
||||||
|
|
||||||
override fun findClass(name: Name, packageFqName: FqName): IrClassSymbol? =
|
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? =
|
fun findClassDescriptor(name: Name, packageFqName: FqName): ClassDescriptor? =
|
||||||
builtIns.builtInsModule.getPackage(packageFqName).memberScope.getContributedClassifier(
|
builtIns.builtInsModule.getPackage(packageFqName).memberScope.getContributedClassifier(
|
||||||
@@ -551,7 +559,7 @@ class IrBuiltInsOverDescriptors(
|
|||||||
override fun findBuiltInClassMemberFunctions(builtInClass: IrClassSymbol, name: Name): Iterable<IrSimpleFunctionSymbol> =
|
override fun findBuiltInClassMemberFunctions(builtInClass: IrClassSymbol, name: Name): Iterable<IrSimpleFunctionSymbol> =
|
||||||
builtInClass.descriptor.unsubstitutedMemberScope
|
builtInClass.descriptor.unsubstitutedMemberScope
|
||||||
.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND)
|
.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND)
|
||||||
.map { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
|
.map { it.toIrSymbol() }
|
||||||
|
|
||||||
private val binaryOperatorCache = mutableMapOf<Triple<Name, IrType, IrType>, IrSimpleFunctionSymbol>()
|
private val binaryOperatorCache = mutableMapOf<Triple<Name, IrType, IrType>, IrSimpleFunctionSymbol>()
|
||||||
|
|
||||||
@@ -595,7 +603,7 @@ class IrBuiltInsOverDescriptors(
|
|||||||
val result = mutableMapOf<T, IrSimpleFunctionSymbol>()
|
val result = mutableMapOf<T, IrSimpleFunctionSymbol>()
|
||||||
for (d in builtInsPackage(*packageNameSegments).getContributedFunctions(name, NoLookupLocation.FROM_BACKEND)) {
|
for (d in builtInsPackage(*packageNameSegments).getContributedFunctions(name, NoLookupLocation.FROM_BACKEND)) {
|
||||||
makeKey(d)?.let { key ->
|
makeKey(d)?.let { key ->
|
||||||
result[key] = symbolTable.descriptorExtension.referenceSimpleFunction(d)
|
result[key] = d.toIrSymbol()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user