[IR] Remove descriptor-related methods from SymbolTable
Replace them with calls to SymbolTableExtension
This commit is contained in:
committed by
Space Team
parent
b886b7488d
commit
8ad202eb8b
+7
-7
@@ -23,7 +23,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
|
||||
|
||||
fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol {
|
||||
synchronized(lock) {
|
||||
return originalTable.referenceClass(descriptor).also {
|
||||
return originalTable.descriptorExtension.referenceClass(descriptor).also {
|
||||
if (!it.isBound) {
|
||||
stubGenerator?.generateClassStub(descriptor)
|
||||
}
|
||||
@@ -33,7 +33,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
|
||||
|
||||
fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol {
|
||||
synchronized(lock) {
|
||||
return originalTable.referenceTypeAlias(descriptor).also {
|
||||
return originalTable.descriptorExtension.referenceTypeAlias(descriptor).also {
|
||||
if (!it.isBound) {
|
||||
stubGenerator?.generateTypeAliasStub(descriptor)
|
||||
}
|
||||
@@ -43,7 +43,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
|
||||
|
||||
fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol {
|
||||
synchronized(lock) {
|
||||
return originalTable.referenceConstructor(descriptor).also {
|
||||
return originalTable.descriptorExtension.referenceConstructor(descriptor).also {
|
||||
if (!it.isBound) {
|
||||
stubGenerator?.generateConstructorStub(descriptor)
|
||||
}
|
||||
@@ -53,7 +53,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
|
||||
|
||||
fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol {
|
||||
synchronized(lock) {
|
||||
return originalTable.referenceEnumEntry(descriptor).also {
|
||||
return originalTable.descriptorExtension.referenceEnumEntry(descriptor).also {
|
||||
if (!it.isBound) {
|
||||
stubGenerator?.generateEnumEntryStub(descriptor)
|
||||
}
|
||||
@@ -63,7 +63,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
|
||||
|
||||
fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol {
|
||||
synchronized(lock) {
|
||||
return originalTable.referenceSimpleFunction(descriptor).also {
|
||||
return originalTable.descriptorExtension.referenceSimpleFunction(descriptor).also {
|
||||
if (!it.isBound) {
|
||||
stubGenerator?.generateFunctionStub(descriptor)
|
||||
}
|
||||
@@ -73,7 +73,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
|
||||
|
||||
fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol {
|
||||
synchronized(lock) {
|
||||
return originalTable.referenceProperty(descriptor).also {
|
||||
return originalTable.descriptorExtension.referenceProperty(descriptor).also {
|
||||
if (!it.isBound) {
|
||||
stubGenerator?.generatePropertyStub(descriptor)
|
||||
}
|
||||
@@ -83,7 +83,7 @@ class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbo
|
||||
|
||||
fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol {
|
||||
synchronized(lock) {
|
||||
return originalTable.referenceTypeParameter(classifier).also {
|
||||
return originalTable.descriptorExtension.referenceTypeParameter(classifier).also {
|
||||
if (!it.isBound) {
|
||||
stubGenerator?.generateOrGetTypeParameterStub(classifier)
|
||||
}
|
||||
|
||||
@@ -24,9 +24,7 @@ import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.*
|
||||
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal
|
||||
@@ -80,11 +78,11 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
fun generateOrGetEmptyExternalPackageFragmentStub(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment {
|
||||
val referenced = symbolTable.referenceExternalPackageFragment(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceExternalPackageFragment(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
return symbolTable.declareExternalPackageFragment(descriptor)
|
||||
return symbolTable.descriptorExtension.declareExternalPackageFragment(descriptor)
|
||||
}
|
||||
|
||||
fun generateOrGetFacadeClass(descriptor: DeclarationDescriptor): IrClass? {
|
||||
@@ -135,7 +133,7 @@ abstract class DeclarationStubGenerator(
|
||||
extensions.computeExternalDeclarationOrigin(descriptor) ?: IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
||||
|
||||
fun generatePropertyStub(descriptor: PropertyDescriptor): IrProperty {
|
||||
val referenced = symbolTable.referenceProperty(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceProperty(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
@@ -156,12 +154,12 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
fun generateFieldStub(descriptor: PropertyDescriptor): IrField {
|
||||
val referenced = symbolTable.referenceField(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceField(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
|
||||
return symbolTable.declareField(
|
||||
return symbolTable.descriptorExtension.declareField(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor), descriptor.original, descriptor.type.toIrType()
|
||||
) {
|
||||
IrLazyField(
|
||||
@@ -177,7 +175,7 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
fun generateFunctionStub(descriptor: FunctionDescriptor, createPropertyIfNeeded: Boolean = true): IrSimpleFunction {
|
||||
val referenced = symbolTable.referenceSimpleFunction(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceSimpleFunction(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
@@ -195,7 +193,7 @@ abstract class DeclarationStubGenerator(
|
||||
if (descriptor.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE)
|
||||
IrDeclarationOrigin.FAKE_OVERRIDE
|
||||
else computeOrigin(descriptor)
|
||||
return symbolTable.declareSimpleFunction(descriptor.original) {
|
||||
return symbolTable.descriptorExtension.declareSimpleFunction(descriptor.original) {
|
||||
IrLazyFunction(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
|
||||
it, descriptor,
|
||||
@@ -209,13 +207,13 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
fun generateConstructorStub(descriptor: ClassConstructorDescriptor): IrConstructor {
|
||||
val referenced = symbolTable.referenceConstructor(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceConstructor(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
|
||||
val origin = computeOrigin(descriptor)
|
||||
return symbolTable.declareConstructor(
|
||||
return symbolTable.descriptorExtension.declareConstructor(
|
||||
descriptor.original
|
||||
) {
|
||||
IrLazyConstructor(
|
||||
@@ -252,7 +250,7 @@ abstract class DeclarationStubGenerator(
|
||||
classDescriptor.modality
|
||||
|
||||
fun generateClassStub(descriptor: ClassDescriptor): IrClass {
|
||||
val irClassSymbol = symbolTable.referenceClass(descriptor)
|
||||
val irClassSymbol = symbolTable.descriptorExtension.referenceClass(descriptor)
|
||||
if (irClassSymbol.isBound) {
|
||||
return irClassSymbol.owner
|
||||
}
|
||||
@@ -267,7 +265,7 @@ abstract class DeclarationStubGenerator(
|
||||
val targetDescriptor = if (irClassSymbol.hasDescriptor) irClassSymbol.descriptor else descriptor
|
||||
with(targetDescriptor) {
|
||||
val origin = computeOrigin(this)
|
||||
return symbolTable.declareClass(this) {
|
||||
return symbolTable.descriptorExtension.declareClass(this) {
|
||||
IrLazyClass(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
|
||||
it, this,
|
||||
@@ -287,12 +285,12 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
fun generateEnumEntryStub(descriptor: ClassDescriptor): IrEnumEntry {
|
||||
val referenced = symbolTable.referenceEnumEntry(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceEnumEntry(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
val origin = computeOrigin(descriptor)
|
||||
return symbolTable.declareEnumEntry(descriptor) {
|
||||
return symbolTable.descriptorExtension.declareEnumEntry(descriptor) {
|
||||
IrLazyEnumEntryImpl(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
|
||||
it, descriptor,
|
||||
@@ -302,7 +300,7 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
internal fun generateOrGetTypeParameterStub(descriptor: TypeParameterDescriptor): IrTypeParameter {
|
||||
val referenced = symbolTable.referenceTypeParameter(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceTypeParameter(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
@@ -321,12 +319,12 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
internal fun generateOrGetScopedTypeParameterStub(descriptor: TypeParameterDescriptor): IrTypeParameter {
|
||||
val referenced = symbolTable.referenceScopedTypeParameter(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceScopedTypeParameter(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
val origin = computeOrigin(descriptor)
|
||||
return symbolTable.declareScopedTypeParameter(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor) {
|
||||
return symbolTable.descriptorExtension.declareScopedTypeParameter(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor) {
|
||||
IrLazyTypeParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
|
||||
it, descriptor,
|
||||
@@ -340,12 +338,12 @@ abstract class DeclarationStubGenerator(
|
||||
}
|
||||
|
||||
fun generateTypeAliasStub(descriptor: TypeAliasDescriptor): IrTypeAlias {
|
||||
val referenced = symbolTable.referenceTypeAlias(descriptor)
|
||||
val referenced = symbolTable.descriptorExtension.referenceTypeAlias(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
}
|
||||
val origin = computeOrigin(descriptor)
|
||||
return symbolTable.declareTypeAlias(descriptor) {
|
||||
return symbolTable.descriptorExtension.declareTypeAlias(descriptor) {
|
||||
IrLazyTypeAlias(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
|
||||
it, descriptor,
|
||||
|
||||
@@ -10,12 +10,8 @@ import org.jetbrains.kotlin.ir.IrLock
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazySymbolTable
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
open class SymbolTable(
|
||||
val signaturer: IdSignatureComposer,
|
||||
@@ -485,366 +481,6 @@ open class SymbolTable(
|
||||
addUnbound(typeAliasSlice)
|
||||
addUnbound(fieldSlice)
|
||||
}
|
||||
|
||||
// ------------------------------------ descriptors ------------------------------------
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceScript(descriptor: ScriptDescriptor): IrScriptSymbol {
|
||||
return descriptorExtension.referenceScript(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareScript(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
descriptor: ScriptDescriptor,
|
||||
): IrScript {
|
||||
return descriptorExtension.declareScript(startOffset, endOffset, descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceExternalPackageFragment(descriptor: PackageFragmentDescriptor): IrExternalPackageFragmentSymbol {
|
||||
return descriptorExtension.referenceExternalPackageFragment(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareExternalPackageFragment(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment {
|
||||
return descriptorExtension.declareExternalPackageFragment(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareExternalPackageFragmentIfNotExists(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment {
|
||||
return descriptorExtension.declareExternalPackageFragmentIfNotExists(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareAnonymousInitializer(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: ClassDescriptor,
|
||||
): IrAnonymousInitializer {
|
||||
return descriptorExtension.declareAnonymousInitializer(startOffset, endOffset, origin, descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareClass(
|
||||
descriptor: ClassDescriptor,
|
||||
classFactory: (IrClassSymbol) -> IrClass,
|
||||
): IrClass {
|
||||
return descriptorExtension.declareClass(descriptor, classFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareClassIfNotExists(descriptor: ClassDescriptor, classFactory: (IrClassSymbol) -> IrClass): IrClass {
|
||||
return descriptorExtension.declareClassIfNotExists(descriptor, classFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareClassFromLinker(descriptor: ClassDescriptor, signature: IdSignature, factory: (IrClassSymbol) -> IrClass): IrClass {
|
||||
return descriptorExtension.declareClassFromLinker(descriptor, signature, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol {
|
||||
return descriptorExtension.referenceClass(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareConstructor(
|
||||
descriptor: ClassConstructorDescriptor,
|
||||
constructorFactory: (IrConstructorSymbol) -> IrConstructor,
|
||||
): IrConstructor {
|
||||
return descriptorExtension.declareConstructor(descriptor, constructorFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareConstructorIfNotExists(
|
||||
descriptor: ClassConstructorDescriptor,
|
||||
constructorFactory: (IrConstructorSymbol) -> IrConstructor,
|
||||
): IrConstructor {
|
||||
return descriptorExtension.declareConstructorIfNotExists(descriptor, constructorFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol {
|
||||
return descriptorExtension.referenceConstructor(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareConstructorFromLinker(
|
||||
descriptor: ClassConstructorDescriptor,
|
||||
signature: IdSignature,
|
||||
constructorFactory: (IrConstructorSymbol) -> IrConstructor,
|
||||
): IrConstructor {
|
||||
return descriptorExtension.declareConstructorFromLinker(descriptor, signature, constructorFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareEnumEntry(
|
||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
||||
): IrEnumEntry {
|
||||
return descriptorExtension.declareEnumEntry(startOffset, endOffset, origin, descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareEnumEntry(
|
||||
descriptor: ClassDescriptor,
|
||||
factory: (IrEnumEntrySymbol) -> IrEnumEntry,
|
||||
): IrEnumEntry {
|
||||
return descriptorExtension.declareEnumEntry(descriptor, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareEnumEntryIfNotExists(descriptor: ClassDescriptor, factory: (IrEnumEntrySymbol) -> IrEnumEntry): IrEnumEntry {
|
||||
return descriptorExtension.declareEnumEntryIfNotExists(descriptor, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareEnumEntryFromLinker(
|
||||
descriptor: ClassDescriptor,
|
||||
signature: IdSignature,
|
||||
factory: (IrEnumEntrySymbol) -> IrEnumEntry,
|
||||
): IrEnumEntry {
|
||||
return descriptorExtension.declareEnumEntryFromLinker(descriptor, signature, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol {
|
||||
return descriptorExtension.referenceEnumEntry(descriptor)
|
||||
}
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
fun declareField(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: PropertyDescriptor,
|
||||
type: IrType,
|
||||
visibility: DescriptorVisibility? = null,
|
||||
fieldFactory: (IrFieldSymbol) -> IrField,
|
||||
): IrField {
|
||||
return descriptorExtension.declareField(startOffset, endOffset, origin, descriptor, type, visibility, fieldFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareField(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: PropertyDescriptor,
|
||||
type: IrType,
|
||||
irInitializer: IrExpressionBody?,
|
||||
): IrField {
|
||||
return descriptorExtension.declareField(startOffset, endOffset, origin, descriptor, type, irInitializer)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceField(descriptor: PropertyDescriptor): IrFieldSymbol {
|
||||
return descriptorExtension.referenceField(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareProperty(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: PropertyDescriptor,
|
||||
isDelegated: Boolean = descriptor.isDelegated,
|
||||
): IrProperty {
|
||||
return descriptorExtension.declareProperty(startOffset, endOffset, origin, descriptor, isDelegated)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareProperty(
|
||||
descriptor: PropertyDescriptor,
|
||||
propertyFactory: (IrPropertySymbol) -> IrProperty,
|
||||
): IrProperty {
|
||||
return descriptorExtension.declareProperty(descriptor, propertyFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declarePropertyIfNotExists(descriptor: PropertyDescriptor, propertyFactory: (IrPropertySymbol) -> IrProperty): IrProperty {
|
||||
return descriptorExtension.declarePropertyIfNotExists(descriptor, propertyFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declarePropertyFromLinker(
|
||||
descriptor: PropertyDescriptor,
|
||||
signature: IdSignature,
|
||||
factory: (IrPropertySymbol) -> IrProperty,
|
||||
): IrProperty {
|
||||
return descriptorExtension.declarePropertyFromLinker(descriptor, signature, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol {
|
||||
return descriptorExtension.referenceProperty(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol {
|
||||
return descriptorExtension.referenceTypeAlias(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareTypeAlias(descriptor: TypeAliasDescriptor, factory: (IrTypeAliasSymbol) -> IrTypeAlias): IrTypeAlias {
|
||||
return descriptorExtension.declareTypeAlias(descriptor, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareTypeAliasIfNotExists(descriptor: TypeAliasDescriptor, factory: (IrTypeAliasSymbol) -> IrTypeAlias): IrTypeAlias {
|
||||
return descriptorExtension.declareTypeAliasIfNotExists(descriptor, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareSimpleFunction(
|
||||
descriptor: FunctionDescriptor,
|
||||
functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction,
|
||||
): IrSimpleFunction {
|
||||
return descriptorExtension.declareSimpleFunction(descriptor, functionFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareSimpleFunctionIfNotExists(
|
||||
descriptor: FunctionDescriptor,
|
||||
functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction,
|
||||
): IrSimpleFunction {
|
||||
return descriptorExtension.declareSimpleFunctionIfNotExists(descriptor, functionFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareSimpleFunctionFromLinker(
|
||||
descriptor: FunctionDescriptor,
|
||||
signature: IdSignature,
|
||||
functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction,
|
||||
): IrSimpleFunction {
|
||||
return descriptorExtension.declareSimpleFunctionFromLinker(descriptor, signature, functionFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol {
|
||||
return descriptorExtension.referenceSimpleFunction(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceDeclaredFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol {
|
||||
return descriptorExtension.referenceDeclaredFunction(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareGlobalTypeParameter(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: TypeParameterDescriptor,
|
||||
): IrTypeParameter {
|
||||
return descriptorExtension.declareGlobalTypeParameter(startOffset, endOffset, origin, descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareScopedTypeParameter(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: TypeParameterDescriptor,
|
||||
typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter,
|
||||
): IrTypeParameter {
|
||||
return descriptorExtension.declareScopedTypeParameter(startOffset, endOffset, origin, descriptor, typeParameterFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareValueParameter(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: ParameterDescriptor,
|
||||
type: IrType,
|
||||
varargElementType: IrType? = null,
|
||||
name: Name? = null,
|
||||
index: Int? = null,
|
||||
isAssignable: Boolean = false,
|
||||
valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter,
|
||||
): IrValueParameter {
|
||||
return descriptorExtension.declareValueParameter(
|
||||
startOffset,
|
||||
endOffset,
|
||||
origin,
|
||||
descriptor,
|
||||
type,
|
||||
varargElementType,
|
||||
name,
|
||||
index,
|
||||
isAssignable,
|
||||
valueParameterFactory
|
||||
)
|
||||
}
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
fun introduceValueParameter(irValueParameter: IrValueParameter) {
|
||||
descriptorExtension.introduceValueParameter(irValueParameter)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
open fun referenceValue(value: ValueDescriptor): IrValueSymbol {
|
||||
return descriptorExtension.referenceValue(value)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceValueParameter(descriptor: ParameterDescriptor): IrValueParameterSymbol {
|
||||
return descriptorExtension.referenceValueParameter(descriptor)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol {
|
||||
return descriptorExtension.referenceTypeParameter(classifier)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol {
|
||||
return descriptorExtension.referenceScopedTypeParameter(classifier)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareVariable(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: VariableDescriptor,
|
||||
type: IrType,
|
||||
variableFactory: (IrVariableSymbol) -> IrVariable,
|
||||
): IrVariable {
|
||||
return descriptorExtension.declareVariable(startOffset, endOffset, origin, descriptor, type, variableFactory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareVariable(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: VariableDescriptor,
|
||||
type: IrType,
|
||||
irInitializerExpression: IrExpression?,
|
||||
): IrVariable {
|
||||
return descriptorExtension.declareVariable(startOffset, endOffset, origin, descriptor, type, irInitializerExpression)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun declareLocalDelegatedProperty(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: VariableDescriptorWithAccessors,
|
||||
type: IrType,
|
||||
factory: (IrLocalDelegatedPropertySymbol) -> IrLocalDelegatedProperty,
|
||||
): IrLocalDelegatedProperty {
|
||||
return descriptorExtension.declareLocalDelegatedProperty(startOffset, endOffset, origin, descriptor, type, factory)
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun referenceLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors): IrLocalDelegatedPropertySymbol {
|
||||
return descriptorExtension.referenceLocalDelegatedProperty(descriptor)
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> SymbolTable.withScope(owner: IrSymbol, block: SymbolTable.() -> T): T {
|
||||
|
||||
@@ -340,7 +340,7 @@ abstract class SymbolTableExtension<
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: Property,
|
||||
isDelegated: Boolean,/* = descriptor.isDelegated*/
|
||||
isDelegated: Boolean
|
||||
): IrProperty {
|
||||
return declareProperty(descriptor) { propertySymbol ->
|
||||
defaultPropertyFactory(startOffset, endOffset, origin, descriptor, isDelegated, propertySymbol)
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal
|
||||
import org.jetbrains.kotlin.utils.memoryOptimizedMap
|
||||
@@ -22,7 +23,7 @@ fun SymbolTable.declareSimpleFunctionWithOverrides(
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: FunctionDescriptor
|
||||
) =
|
||||
declareSimpleFunction(descriptor) {
|
||||
descriptorExtension.declareSimpleFunction(descriptor) {
|
||||
with(descriptor) {
|
||||
irFactory.createSimpleFunction(
|
||||
startOffset = startOffset,
|
||||
|
||||
Reference in New Issue
Block a user