[IR] Remove descriptor-related methods from SymbolTable

Replace them with calls to SymbolTableExtension
This commit is contained in:
Dmitriy Novozhilov
2023-07-11 12:17:59 +03:00
committed by Space Team
parent b886b7488d
commit 8ad202eb8b
55 changed files with 349 additions and 675 deletions
@@ -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,