[IR] Remove descriptor-related methods from ReferenceSymbolTable

Replace them with calls to ReferenceSymbolTableExtension
This commit is contained in:
Dmitriy Novozhilov
2023-07-11 11:54:08 +03:00
committed by Space Team
parent 4986cb14aa
commit b886b7488d
11 changed files with 48 additions and 81 deletions
@@ -111,7 +111,7 @@ open class IrPluginContextImpl constructor(
return resolveSymbol(fqName.parent()) { scope -> return resolveSymbol(fqName.parent()) { scope ->
val classDescriptor = scope.getContributedClassifier(fqName.shortName(), NoLookupLocation.FROM_BACKEND) as? ClassDescriptor? val classDescriptor = scope.getContributedClassifier(fqName.shortName(), NoLookupLocation.FROM_BACKEND) as? ClassDescriptor?
classDescriptor?.let { classDescriptor?.let {
st.referenceClass(it) st.descriptorExtension.referenceClass(it)
} }
} }
} }
@@ -122,7 +122,7 @@ open class IrPluginContextImpl constructor(
return resolveSymbol(fqName.parent()) { scope -> return resolveSymbol(fqName.parent()) { scope ->
val aliasDescriptor = scope.getContributedClassifier(fqName.shortName(), NoLookupLocation.FROM_BACKEND) as? TypeAliasDescriptor? val aliasDescriptor = scope.getContributedClassifier(fqName.shortName(), NoLookupLocation.FROM_BACKEND) as? TypeAliasDescriptor?
aliasDescriptor?.let { aliasDescriptor?.let {
st.referenceTypeAlias(it) st.descriptorExtension.referenceTypeAlias(it)
} }
} }
} }
@@ -138,7 +138,7 @@ open class IrPluginContextImpl constructor(
assert(!fqName.isRoot) assert(!fqName.isRoot)
return resolveSymbolCollection(fqName.parent()) { scope -> return resolveSymbolCollection(fqName.parent()) { scope ->
val descriptors = scope.getContributedFunctions(fqName.shortName(), NoLookupLocation.FROM_BACKEND) val descriptors = scope.getContributedFunctions(fqName.shortName(), NoLookupLocation.FROM_BACKEND)
descriptors.map { st.referenceSimpleFunction(it) } descriptors.map { st.descriptorExtension.referenceSimpleFunction(it) }
} }
} }
@@ -147,7 +147,7 @@ open class IrPluginContextImpl constructor(
assert(!fqName.isRoot) assert(!fqName.isRoot)
return resolveSymbolCollection(fqName.parent()) { scope -> return resolveSymbolCollection(fqName.parent()) { scope ->
val descriptors = scope.getContributedVariables(fqName.shortName(), NoLookupLocation.FROM_BACKEND) val descriptors = scope.getContributedVariables(fqName.shortName(), NoLookupLocation.FROM_BACKEND)
descriptors.map { st.referenceProperty(it) } descriptors.map { st.descriptorExtension.referenceProperty(it) }
} }
} }
@@ -64,28 +64,28 @@ open class ExpectDeclarationRemover(val symbolTable: ReferenceSymbolTable, priva
} }
override fun getActualClass(descriptor: ClassDescriptor): IrClassSymbol? { override fun getActualClass(descriptor: ClassDescriptor): IrClassSymbol? {
return symbolTable.referenceClass( return symbolTable.descriptorExtension.referenceClass(
descriptor.findActualForExpect() as? ClassDescriptor ?: return null descriptor.findActualForExpect() as? ClassDescriptor ?: return null
) )
} }
override fun getActualProperty(descriptor: PropertyDescriptor): ActualPropertyResult? { override fun getActualProperty(descriptor: PropertyDescriptor): ActualPropertyResult? {
val newSymbol = symbolTable.referenceProperty( val newSymbol = symbolTable.descriptorExtension.referenceProperty(
descriptor.findActualForExpect() as? PropertyDescriptor ?: return null descriptor.findActualForExpect() as? PropertyDescriptor ?: return null
) )
val newGetter = newSymbol.descriptor.getter?.let { symbolTable.referenceSimpleFunction(it) } val newGetter = newSymbol.descriptor.getter?.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
val newSetter = newSymbol.descriptor.setter?.let { symbolTable.referenceSimpleFunction(it) } val newSetter = newSymbol.descriptor.setter?.let { symbolTable.descriptorExtension.referenceSimpleFunction(it) }
return ActualPropertyResult(newSymbol, newGetter, newSetter) return ActualPropertyResult(newSymbol, newGetter, newSetter)
} }
override fun getActualConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol? { override fun getActualConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol? {
return symbolTable.referenceConstructor( return symbolTable.descriptorExtension.referenceConstructor(
descriptor.findActualForExpect() as? ClassConstructorDescriptor ?: return null descriptor.findActualForExpect() as? ClassConstructorDescriptor ?: return null
) )
} }
override fun getActualFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol? { override fun getActualFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol? {
return symbolTable.referenceSimpleFunction( return symbolTable.descriptorExtension.referenceSimpleFunction(
descriptor.findActualForExpect() as? FunctionDescriptor ?: return null descriptor.findActualForExpect() as? FunctionDescriptor ?: return null
) )
} }
@@ -173,7 +173,7 @@ open class ExpectDeclarationRemover(val symbolTable: ReferenceSymbolTable, priva
override fun visitGetValue(expression: IrGetValue): IrExpression { override fun visitGetValue(expression: IrGetValue): IrExpression {
expression.transformChildrenVoid() expression.transformChildrenVoid()
return expression.actualize( return expression.actualize(
classActualizer = { symbolTable.referenceClass(it.descriptor.findActualForExpect() as ClassDescriptor).owner }, classActualizer = { symbolTable.descriptorExtension.referenceClass(it.descriptor.findActualForExpect() as ClassDescriptor).owner },
functionActualizer = { symbolTable.referenceFunction(it.descriptor.findActualForExpect() as FunctionDescriptor).owner } functionActualizer = { symbolTable.referenceFunction(it.descriptor.findActualForExpect() as FunctionDescriptor).owner }
) )
} }
@@ -139,7 +139,7 @@ internal class DataClassMembersGenerator(
var substituted: CallableDescriptor? = null var substituted: CallableDescriptor? = null
val symbol = getHashCodeFunction(type.toKotlinType()) { hashCodeDescriptor -> val symbol = getHashCodeFunction(type.toKotlinType()) { hashCodeDescriptor ->
substituted = hashCodeDescriptor substituted = hashCodeDescriptor
symbolTable.referenceSimpleFunction(hashCodeDescriptor.original) symbolTable.descriptorExtension.referenceSimpleFunction(hashCodeDescriptor.original)
} }
return Psi2IrHashCodeFunctionInfo(symbol, substituted ?: symbol.descriptor) return Psi2IrHashCodeFunctionInfo(symbol, substituted ?: symbol.descriptor)
} }
@@ -21,7 +21,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
/*Don't force builtins class linking before unbound symbols linking: otherwise stdlib compilation will failed*/ /*Don't force builtins class linking before unbound symbols linking: otherwise stdlib compilation will failed*/
var stubGenerator: DeclarationStubGenerator? = null var stubGenerator: DeclarationStubGenerator? = null
override fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol { fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol {
synchronized(lock) { synchronized(lock) {
return originalTable.referenceClass(descriptor).also { return originalTable.referenceClass(descriptor).also {
if (!it.isBound) { if (!it.isBound) {
@@ -31,7 +31,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
} }
} }
override fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol { fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol {
synchronized(lock) { synchronized(lock) {
return originalTable.referenceTypeAlias(descriptor).also { return originalTable.referenceTypeAlias(descriptor).also {
if (!it.isBound) { if (!it.isBound) {
@@ -41,7 +41,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
} }
} }
override fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol { fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol {
synchronized(lock) { synchronized(lock) {
return originalTable.referenceConstructor(descriptor).also { return originalTable.referenceConstructor(descriptor).also {
if (!it.isBound) { if (!it.isBound) {
@@ -51,7 +51,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
} }
} }
override fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol { fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol {
synchronized(lock) { synchronized(lock) {
return originalTable.referenceEnumEntry(descriptor).also { return originalTable.referenceEnumEntry(descriptor).also {
if (!it.isBound) { if (!it.isBound) {
@@ -61,7 +61,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
} }
} }
override fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol { fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol {
synchronized(lock) { synchronized(lock) {
return originalTable.referenceSimpleFunction(descriptor).also { return originalTable.referenceSimpleFunction(descriptor).also {
if (!it.isBound) { if (!it.isBound) {
@@ -71,7 +71,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
} }
} }
override fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol { fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol {
synchronized(lock) { synchronized(lock) {
return originalTable.referenceProperty(descriptor).also { return originalTable.referenceProperty(descriptor).also {
if (!it.isBound) { if (!it.isBound) {
@@ -81,7 +81,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
} }
} }
override fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol { fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol {
synchronized(lock) { synchronized(lock) {
return originalTable.referenceTypeParameter(classifier).also { return originalTable.referenceTypeParameter(classifier).also {
if (!it.isBound) { if (!it.isBound) {
@@ -133,7 +133,7 @@ abstract class ConstantValueGenerator(
else -> IrGetEnumValueImpl( else -> IrGetEnumValueImpl(
startOffset, endOffset, startOffset, endOffset,
constantType, constantType,
symbolTable.referenceEnumEntry(enumEntryDescriptor) symbolTable.descriptorExtension.referenceEnumEntry(enumEntryDescriptor)
) )
} }
} }
@@ -178,7 +178,7 @@ abstract class ConstantValueGenerator(
val primaryConstructorDescriptor = annotationClassDescriptor.unsubstitutedPrimaryConstructor val primaryConstructorDescriptor = annotationClassDescriptor.unsubstitutedPrimaryConstructor
?: annotationClassDescriptor.constructors.singleOrNull() ?: annotationClassDescriptor.constructors.singleOrNull()
?: throw AssertionError("No constructor for annotation class $annotationClassDescriptor") ?: throw AssertionError("No constructor for annotation class $annotationClassDescriptor")
val primaryConstructorSymbol = symbolTable.referenceConstructor(primaryConstructorDescriptor) val primaryConstructorSymbol = symbolTable.descriptorExtension.referenceConstructor(primaryConstructorDescriptor)
val (startOffset, endOffset) = extractAnnotationOffsets(annotationDescriptor) val (startOffset, endOffset) = extractAnnotationOffsets(annotationDescriptor)
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.utils.threadLocal
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
typealias DescriptorBasedReferenceSymbolTableExtension = ReferenceSymbolTableExtension< typealias DescriptorBasedReferenceSymbolTableExtension = ReferenceSymbolTableExtension<
ClassDescriptor, TypeAliasDescriptor, ScriptDescriptor, FunctionDescriptor, ClassConstructorDescriptor, ClassDescriptor, TypeAliasDescriptor, ScriptDescriptor, FunctionDescriptor, ClassConstructorDescriptor,
PropertyDescriptor, ValueParameterDescriptor, TypeParameterDescriptor PropertyDescriptor, ParameterDescriptor, TypeParameterDescriptor
> >
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
@@ -390,11 +390,11 @@ fun IrValueParameter.hasDefaultValue(): Boolean = DFS.ifAny(
fun ReferenceSymbolTable.referenceClassifier(classifier: ClassifierDescriptor): IrClassifierSymbol = fun ReferenceSymbolTable.referenceClassifier(classifier: ClassifierDescriptor): IrClassifierSymbol =
when (classifier) { when (classifier) {
is TypeParameterDescriptor -> is TypeParameterDescriptor ->
referenceTypeParameter(classifier) descriptorExtension.referenceTypeParameter(classifier)
is ScriptDescriptor -> is ScriptDescriptor ->
referenceScript(classifier) descriptorExtension.referenceScript(classifier)
is ClassDescriptor -> is ClassDescriptor ->
referenceClass(classifier) descriptorExtension.referenceClass(classifier)
else -> else ->
throw IllegalArgumentException("Unexpected classifier descriptor: $classifier") throw IllegalArgumentException("Unexpected classifier descriptor: $classifier")
} }
@@ -403,9 +403,9 @@ fun ReferenceSymbolTable.referenceClassifier(classifier: ClassifierDescriptor):
fun ReferenceSymbolTable.referenceFunction(callable: CallableDescriptor): IrFunctionSymbol = fun ReferenceSymbolTable.referenceFunction(callable: CallableDescriptor): IrFunctionSymbol =
when (callable) { when (callable) {
is ClassConstructorDescriptor -> is ClassConstructorDescriptor ->
referenceConstructor(callable) descriptorExtension.referenceConstructor(callable)
is FunctionDescriptor -> is FunctionDescriptor ->
referenceSimpleFunction(callable) descriptorExtension.referenceSimpleFunction(callable)
else -> else ->
throw IllegalArgumentException("Unexpected callable descriptor: $callable") throw IllegalArgumentException("Unexpected callable descriptor: $callable")
} }
@@ -5,54 +5,21 @@
package org.jetbrains.kotlin.ir.util package org.jetbrains.kotlin.ir.util
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.symbols.*
interface ReferenceSymbolTable { interface ReferenceSymbolTable {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol val descriptorExtension: DescriptorBasedReferenceSymbolTableExtension
fun referenceClass(signature: IdSignature): IrClassSymbol fun referenceClass(signature: IdSignature): IrClassSymbol
@ObsoleteDescriptorBasedAPI
fun referenceScript(descriptor: ScriptDescriptor): IrScriptSymbol
@ObsoleteDescriptorBasedAPI
fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol
fun referenceConstructor(signature: IdSignature): IrConstructorSymbol fun referenceConstructor(signature: IdSignature): IrConstructorSymbol
@ObsoleteDescriptorBasedAPI
fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol
fun referenceEnumEntry(signature: IdSignature): IrEnumEntrySymbol fun referenceEnumEntry(signature: IdSignature): IrEnumEntrySymbol
@ObsoleteDescriptorBasedAPI
fun referenceField(descriptor: PropertyDescriptor): IrFieldSymbol
fun referenceField(signature: IdSignature): IrFieldSymbol fun referenceField(signature: IdSignature): IrFieldSymbol
@ObsoleteDescriptorBasedAPI
fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol
fun referenceProperty(signature: IdSignature): IrPropertySymbol fun referenceProperty(signature: IdSignature): IrPropertySymbol
@ObsoleteDescriptorBasedAPI
fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol
fun referenceSimpleFunction(signature: IdSignature): IrSimpleFunctionSymbol fun referenceSimpleFunction(signature: IdSignature): IrSimpleFunctionSymbol
@ObsoleteDescriptorBasedAPI
fun referenceDeclaredFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol
@ObsoleteDescriptorBasedAPI
fun referenceValueParameter(descriptor: ParameterDescriptor): IrValueParameterSymbol
@ObsoleteDescriptorBasedAPI
fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol
fun referenceTypeParameter(signature: IdSignature): IrTypeParameterSymbol fun referenceTypeParameter(signature: IdSignature): IrTypeParameterSymbol
@ObsoleteDescriptorBasedAPI
fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol
@ObsoleteDescriptorBasedAPI
fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol
fun referenceTypeAlias(signature: IdSignature): IrTypeAliasSymbol fun referenceTypeAlias(signature: IdSignature): IrTypeAliasSymbol
fun enterScope(symbol: IrSymbol) fun enterScope(symbol: IrSymbol)
@@ -39,7 +39,7 @@ open class SymbolTable(
@Suppress("LeakingThis") @Suppress("LeakingThis")
@OptIn(ObsoleteDescriptorBasedAPI::class) @OptIn(ObsoleteDescriptorBasedAPI::class)
val descriptorExtension: DescriptorSymbolTableExtension = DescriptorSymbolTableExtension(this) override val descriptorExtension: DescriptorSymbolTableExtension = DescriptorSymbolTableExtension(this)
// ------------------------------------ script ------------------------------------ // ------------------------------------ script ------------------------------------
@@ -489,7 +489,7 @@ open class SymbolTable(
// ------------------------------------ descriptors ------------------------------------ // ------------------------------------ descriptors ------------------------------------
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceScript(descriptor: ScriptDescriptor): IrScriptSymbol { fun referenceScript(descriptor: ScriptDescriptor): IrScriptSymbol {
return descriptorExtension.referenceScript(descriptor) return descriptorExtension.referenceScript(descriptor)
} }
@@ -546,7 +546,7 @@ open class SymbolTable(
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol { fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol {
return descriptorExtension.referenceClass(descriptor) return descriptorExtension.referenceClass(descriptor)
} }
@@ -567,7 +567,7 @@ open class SymbolTable(
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol { fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol {
return descriptorExtension.referenceConstructor(descriptor) return descriptorExtension.referenceConstructor(descriptor)
} }
@@ -610,7 +610,7 @@ open class SymbolTable(
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol { fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol {
return descriptorExtension.referenceEnumEntry(descriptor) return descriptorExtension.referenceEnumEntry(descriptor)
} }
@@ -640,7 +640,7 @@ open class SymbolTable(
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceField(descriptor: PropertyDescriptor): IrFieldSymbol { fun referenceField(descriptor: PropertyDescriptor): IrFieldSymbol {
return descriptorExtension.referenceField(descriptor) return descriptorExtension.referenceField(descriptor)
} }
@@ -678,12 +678,12 @@ open class SymbolTable(
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol { fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol {
return descriptorExtension.referenceProperty(descriptor) return descriptorExtension.referenceProperty(descriptor)
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol { fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol {
return descriptorExtension.referenceTypeAlias(descriptor) return descriptorExtension.referenceTypeAlias(descriptor)
} }
@@ -723,12 +723,12 @@ open class SymbolTable(
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol { fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol {
return descriptorExtension.referenceSimpleFunction(descriptor) return descriptorExtension.referenceSimpleFunction(descriptor)
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceDeclaredFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol { fun referenceDeclaredFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol {
return descriptorExtension.referenceDeclaredFunction(descriptor) return descriptorExtension.referenceDeclaredFunction(descriptor)
} }
@@ -791,17 +791,17 @@ open class SymbolTable(
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceValueParameter(descriptor: ParameterDescriptor): IrValueParameterSymbol { fun referenceValueParameter(descriptor: ParameterDescriptor): IrValueParameterSymbol {
return descriptorExtension.referenceValueParameter(descriptor) return descriptorExtension.referenceValueParameter(descriptor)
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol { fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol {
return descriptorExtension.referenceTypeParameter(classifier) return descriptorExtension.referenceTypeParameter(classifier)
} }
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol { fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol {
return descriptorExtension.referenceScopedTypeParameter(classifier) return descriptorExtension.referenceScopedTypeParameter(classifier)
} }
@@ -84,7 +84,7 @@ abstract class TypeTranslator(
} }
val originalTypeParameter = typeParameterDescriptor.originalTypeParameter val originalTypeParameter = typeParameterDescriptor.originalTypeParameter
return typeParametersResolver.resolveScopedTypeParameter(originalTypeParameter) return typeParametersResolver.resolveScopedTypeParameter(originalTypeParameter)
?: symbolTable.referenceTypeParameter(originalTypeParameter) ?: symbolTable.descriptorExtension.referenceTypeParameter(originalTypeParameter)
} }
fun translateType(kotlinType: KotlinType): IrType { fun translateType(kotlinType: KotlinType): IrType {
@@ -136,7 +136,7 @@ abstract class TypeTranslator(
} }
is ScriptDescriptor -> { is ScriptDescriptor -> {
classifier = symbolTable.referenceScript(upperTypeDescriptor) classifier = symbolTable.descriptorExtension.referenceScript(upperTypeDescriptor)
} }
is ClassDescriptor -> { is ClassDescriptor -> {
// Types such as 'java.util.Collection<? extends CharSequence>' are treated as // Types such as 'java.util.Collection<? extends CharSequence>' are treated as
@@ -154,7 +154,7 @@ abstract class TypeTranslator(
lowerType.constructor.declarationDescriptor as? ClassDescriptor lowerType.constructor.declarationDescriptor as? ClassDescriptor
?: throw AssertionError("No class descriptor for lower type $lowerType of $approximatedType") ?: throw AssertionError("No class descriptor for lower type $lowerType of $approximatedType")
annotations = translateTypeAnnotations(upperType, approximatedType) annotations = translateTypeAnnotations(upperType, approximatedType)
classifier = symbolTable.referenceClass(lowerTypeDescriptor) classifier = symbolTable.descriptorExtension.referenceClass(lowerTypeDescriptor)
arguments = when { arguments = when {
approximatedType is RawType -> approximatedType is RawType ->
translateTypeArguments(approximatedType.arguments) translateTypeArguments(approximatedType.arguments)
@@ -186,7 +186,7 @@ abstract class TypeTranslator(
if (!isTypeAliasAccessibleHere(typeAliasDescriptor)) return null if (!isTypeAliasAccessibleHere(typeAliasDescriptor)) return null
return IrTypeAbbreviationImpl( return IrTypeAbbreviationImpl(
symbolTable.referenceTypeAlias(typeAliasDescriptor), symbolTable.descriptorExtension.referenceTypeAlias(typeAliasDescriptor),
isMarkedNullable, isMarkedNullable,
translateTypeArguments(this.arguments), translateTypeArguments(this.arguments),
translateTypeAnnotations(this) translateTypeAnnotations(this)
@@ -55,6 +55,6 @@ fun generateOverriddenFunctionSymbols(
symbolTable: ReferenceSymbolTable symbolTable: ReferenceSymbolTable
) { ) {
declaration.overriddenSymbols = declaration.descriptor.overriddenDescriptors.memoryOptimizedMap { declaration.overriddenSymbols = declaration.descriptor.overriddenDescriptors.memoryOptimizedMap {
symbolTable.referenceSimpleFunction(it.original) symbolTable.descriptorExtension.referenceSimpleFunction(it.original)
} }
} }