[IR] Remove descriptor-related methods from ReferenceSymbolTable
Replace them with calls to ReferenceSymbolTableExtension
This commit is contained in:
committed by
Space Team
parent
4986cb14aa
commit
b886b7488d
+4
-4
@@ -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) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -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 }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-7
@@ -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)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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")
|
||||||
}
|
}
|
||||||
@@ -1435,4 +1435,4 @@ fun IrAttributeContainer.extractRelatedDeclaration(): IrDeclaration? {
|
|||||||
|
|
||||||
inline fun <reified Symbol : IrSymbol> IrSymbol.unexpectedSymbolKind(): Nothing {
|
inline fun <reified Symbol : IrSymbol> IrSymbol.unexpectedSymbolKind(): Nothing {
|
||||||
throw IllegalArgumentException("Unexpected kind of ${Symbol::class.java.typeName}: $this")
|
throw IllegalArgumentException("Unexpected kind of ${Symbol::class.java.typeName}: $this")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user