[IR] Mark methods with descriptors of SymbolTable with @ObsoleteDescriptorBasedAPI

This commit is contained in:
Dmitriy Novozhilov
2022-06-17 10:14:17 +03:00
committed by teamcity
parent 9ec1143256
commit f7e0880c34
@@ -66,6 +66,8 @@ interface ReferenceSymbolTable {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol
@ObsoleteDescriptorBasedAPI
fun referenceVariable(descriptor: VariableDescriptor): IrVariableSymbol fun referenceVariable(descriptor: VariableDescriptor): IrVariableSymbol
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
@@ -391,9 +393,11 @@ open class SymbolTable(
listOf(valueParameterSymbolTable, variableSymbolTable, scopedTypeParameterSymbolTable, localDelegatedPropertySymbolTable) listOf(valueParameterSymbolTable, variableSymbolTable, scopedTypeParameterSymbolTable, localDelegatedPropertySymbolTable)
} }
@ObsoleteDescriptorBasedAPI
fun referenceExternalPackageFragment(descriptor: PackageFragmentDescriptor) = fun referenceExternalPackageFragment(descriptor: PackageFragmentDescriptor) =
externalPackageFragmentTable.referenced(descriptor) { IrExternalPackageFragmentSymbolImpl(descriptor) } externalPackageFragmentTable.referenced(descriptor) { IrExternalPackageFragmentSymbolImpl(descriptor) }
@ObsoleteDescriptorBasedAPI
fun declareExternalPackageFragment(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment { fun declareExternalPackageFragment(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment {
return externalPackageFragmentTable.declare( return externalPackageFragmentTable.declare(
descriptor, descriptor,
@@ -402,6 +406,7 @@ open class SymbolTable(
) )
} }
@ObsoleteDescriptorBasedAPI
fun declareExternalPackageFragmentIfNotExists(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment { fun declareExternalPackageFragmentIfNotExists(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment {
return externalPackageFragmentTable.declareIfNotExists( return externalPackageFragmentTable.declareIfNotExists(
descriptor, descriptor,
@@ -410,6 +415,7 @@ open class SymbolTable(
) )
} }
@ObsoleteDescriptorBasedAPI
fun declareAnonymousInitializer( fun declareAnonymousInitializer(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -423,6 +429,7 @@ open class SymbolTable(
fun listExistedScripts() = scriptSymbolTable.descriptorToSymbol.map { it.value } fun listExistedScripts() = scriptSymbolTable.descriptorToSymbol.map { it.value }
@ObsoleteDescriptorBasedAPI
fun declareScript( fun declareScript(
descriptor: ScriptDescriptor, descriptor: ScriptDescriptor,
scriptFactory: (IrScriptSymbol) -> IrScript = { symbol: IrScriptSymbol -> scriptFactory: (IrScriptSymbol) -> IrScript = { symbol: IrScriptSymbol ->
@@ -455,6 +462,7 @@ open class SymbolTable(
private fun createClassSymbol(descriptor: ClassDescriptor, signature: IdSignature?): IrClassSymbol = private fun createClassSymbol(descriptor: ClassDescriptor, signature: IdSignature?): IrClassSymbol =
signature?.let { IrClassPublicSymbolImpl(it, descriptor) } ?: IrClassSymbolImpl(descriptor) signature?.let { IrClassPublicSymbolImpl(it, descriptor) } ?: IrClassSymbolImpl(descriptor)
@ObsoleteDescriptorBasedAPI
fun declareClass( fun declareClass(
descriptor: ClassDescriptor, descriptor: ClassDescriptor,
classFactory: (IrClassSymbol) -> IrClass classFactory: (IrClassSymbol) -> IrClass
@@ -482,9 +490,11 @@ open class SymbolTable(
classSymbolTable.set(sig, symbol) classSymbolTable.set(sig, symbol)
} }
@ObsoleteDescriptorBasedAPI
fun declareClassIfNotExists(descriptor: ClassDescriptor, classFactory: (IrClassSymbol) -> IrClass): IrClass = fun declareClassIfNotExists(descriptor: ClassDescriptor, classFactory: (IrClassSymbol) -> IrClass): IrClass =
classSymbolTable.declareIfNotExists(descriptor, { signature -> createClassSymbol(descriptor, signature) }, classFactory) classSymbolTable.declareIfNotExists(descriptor, { signature -> createClassSymbol(descriptor, signature) }, classFactory)
@ObsoleteDescriptorBasedAPI
fun declareClassFromLinker(descriptor: ClassDescriptor, sig: IdSignature, factory: (IrClassSymbol) -> IrClass): IrClass { fun declareClassFromLinker(descriptor: ClassDescriptor, sig: IdSignature, factory: (IrClassSymbol) -> IrClass): IrClass {
return classSymbolTable.run { return classSymbolTable.run {
if (sig.isPubliclyVisible) { if (sig.isPubliclyVisible) {
@@ -532,6 +542,7 @@ open class SymbolTable(
private fun createConstructorSymbol(descriptor: ClassConstructorDescriptor, signature: IdSignature?): IrConstructorSymbol = private fun createConstructorSymbol(descriptor: ClassConstructorDescriptor, signature: IdSignature?): IrConstructorSymbol =
signature?.let { IrConstructorPublicSymbolImpl(it, descriptor) } ?: IrConstructorSymbolImpl(descriptor) signature?.let { IrConstructorPublicSymbolImpl(it, descriptor) } ?: IrConstructorSymbolImpl(descriptor)
@ObsoleteDescriptorBasedAPI
fun declareConstructor( fun declareConstructor(
descriptor: ClassConstructorDescriptor, descriptor: ClassConstructorDescriptor,
constructorFactory: (IrConstructorSymbol) -> IrConstructor constructorFactory: (IrConstructorSymbol) -> IrConstructor
@@ -554,6 +565,7 @@ open class SymbolTable(
) )
} }
@ObsoleteDescriptorBasedAPI
fun declareConstructorIfNotExists( fun declareConstructorIfNotExists(
descriptor: ClassConstructorDescriptor, descriptor: ClassConstructorDescriptor,
constructorFactory: (IrConstructorSymbol) -> IrConstructor, constructorFactory: (IrConstructorSymbol) -> IrConstructor,
@@ -575,6 +587,7 @@ open class SymbolTable(
fun referenceConstructorIfAny(sig: IdSignature): IrConstructorSymbol? = fun referenceConstructorIfAny(sig: IdSignature): IrConstructorSymbol? =
constructorSymbolTable.get(sig) constructorSymbolTable.get(sig)
@ObsoleteDescriptorBasedAPI
fun declareConstructorFromLinker( fun declareConstructorFromLinker(
descriptor: ClassConstructorDescriptor, descriptor: ClassConstructorDescriptor,
sig: IdSignature, sig: IdSignature,
@@ -600,6 +613,7 @@ open class SymbolTable(
private fun createEnumEntrySymbol(descriptor: ClassDescriptor, signature: IdSignature?): IrEnumEntrySymbol = private fun createEnumEntrySymbol(descriptor: ClassDescriptor, signature: IdSignature?): IrEnumEntrySymbol =
signature?.let { IrEnumEntryPublicSymbolImpl(it, descriptor) } ?: IrEnumEntrySymbolImpl(descriptor) signature?.let { IrEnumEntryPublicSymbolImpl(it, descriptor) } ?: IrEnumEntrySymbolImpl(descriptor)
@ObsoleteDescriptorBasedAPI
fun declareEnumEntry( fun declareEnumEntry(
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
factory: (IrEnumEntrySymbol) -> IrEnumEntry = { factory: (IrEnumEntrySymbol) -> IrEnumEntry = {
@@ -618,9 +632,11 @@ open class SymbolTable(
enumEntryFactory: (IrEnumEntrySymbol) -> IrEnumEntry enumEntryFactory: (IrEnumEntrySymbol) -> IrEnumEntry
): IrEnumEntry = enumEntrySymbolTable.declare(sig, symbolFactory, enumEntryFactory) ): IrEnumEntry = enumEntrySymbolTable.declare(sig, symbolFactory, enumEntryFactory)
@ObsoleteDescriptorBasedAPI
fun declareEnumEntryIfNotExists(descriptor: ClassDescriptor, factory: (IrEnumEntrySymbol) -> IrEnumEntry): IrEnumEntry = fun declareEnumEntryIfNotExists(descriptor: ClassDescriptor, factory: (IrEnumEntrySymbol) -> IrEnumEntry): IrEnumEntry =
enumEntrySymbolTable.declareIfNotExists(descriptor, { signature -> createEnumEntrySymbol(descriptor, signature) }, factory) enumEntrySymbolTable.declareIfNotExists(descriptor, { signature -> createEnumEntrySymbol(descriptor, signature) }, factory)
@ObsoleteDescriptorBasedAPI
fun declareEnumEntryFromLinker( fun declareEnumEntryFromLinker(
descriptor: ClassDescriptor, descriptor: ClassDescriptor,
sig: IdSignature, sig: IdSignature,
@@ -674,6 +690,7 @@ open class SymbolTable(
fieldFactory fieldFactory
) )
@ObsoleteDescriptorBasedAPI
fun declareField( fun declareField(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -698,6 +715,7 @@ open class SymbolTable(
) )
} }
@ObsoleteDescriptorBasedAPI
fun declareFieldFromLinker(descriptor: PropertyDescriptor, sig: IdSignature, factory: (IrFieldSymbol) -> IrField): IrField { fun declareFieldFromLinker(descriptor: PropertyDescriptor, sig: IdSignature, factory: (IrFieldSymbol) -> IrField): IrField {
return fieldSymbolTable.run { return fieldSymbolTable.run {
require(sig.isLocal || sig.isPubliclyVisible) require(sig.isLocal || sig.isPubliclyVisible)
@@ -733,7 +751,7 @@ open class SymbolTable(
private fun createPropertySymbol(descriptor: PropertyDescriptor, signature: IdSignature?): IrPropertySymbol = private fun createPropertySymbol(descriptor: PropertyDescriptor, signature: IdSignature?): IrPropertySymbol =
signature?.let { IrPropertyPublicSymbolImpl(it, descriptor) } ?: IrPropertySymbolImpl(descriptor) signature?.let { IrPropertyPublicSymbolImpl(it, descriptor) } ?: IrPropertySymbolImpl(descriptor)
@OptIn(ObsoleteDescriptorBasedAPI::class) @ObsoleteDescriptorBasedAPI
fun declareProperty( fun declareProperty(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -775,9 +793,11 @@ open class SymbolTable(
) )
} }
@ObsoleteDescriptorBasedAPI
fun declarePropertyIfNotExists(descriptor: PropertyDescriptor, propertyFactory: (IrPropertySymbol) -> IrProperty): IrProperty = fun declarePropertyIfNotExists(descriptor: PropertyDescriptor, propertyFactory: (IrPropertySymbol) -> IrProperty): IrProperty =
propertySymbolTable.declareIfNotExists(descriptor, { signature -> createPropertySymbol(descriptor, signature) }, propertyFactory) propertySymbolTable.declareIfNotExists(descriptor, { signature -> createPropertySymbol(descriptor, signature) }, propertyFactory)
@ObsoleteDescriptorBasedAPI
fun declarePropertyFromLinker(descriptor: PropertyDescriptor, sig: IdSignature, factory: (IrPropertySymbol) -> IrProperty): IrProperty { fun declarePropertyFromLinker(descriptor: PropertyDescriptor, sig: IdSignature, factory: (IrPropertySymbol) -> IrProperty): IrProperty {
return propertySymbolTable.run { return propertySymbolTable.run {
if (sig.isPubliclyVisible) { if (sig.isPubliclyVisible) {
@@ -820,6 +840,7 @@ open class SymbolTable(
else IrTypeAliasSymbolImpl() else IrTypeAliasSymbolImpl()
} }
@ObsoleteDescriptorBasedAPI
fun declareTypeAlias(descriptor: TypeAliasDescriptor, factory: (IrTypeAliasSymbol) -> IrTypeAlias): IrTypeAlias = fun declareTypeAlias(descriptor: TypeAliasDescriptor, factory: (IrTypeAliasSymbol) -> IrTypeAlias): IrTypeAlias =
typeAliasSymbolTable.declare(descriptor, { signature -> createTypeAliasSymbol(descriptor, signature) }, factory) typeAliasSymbolTable.declare(descriptor, { signature -> createTypeAliasSymbol(descriptor, signature) }, factory)
@@ -831,6 +852,7 @@ open class SymbolTable(
return typeAliasSymbolTable.declare(sig, symbolFactory, factory) return typeAliasSymbolTable.declare(sig, symbolFactory, factory)
} }
@ObsoleteDescriptorBasedAPI
fun declareTypeAliasIfNotExists(descriptor: TypeAliasDescriptor, factory: (IrTypeAliasSymbol) -> IrTypeAlias): IrTypeAlias = fun declareTypeAliasIfNotExists(descriptor: TypeAliasDescriptor, factory: (IrTypeAliasSymbol) -> IrTypeAlias): IrTypeAlias =
typeAliasSymbolTable.declareIfNotExists(descriptor, { signature -> createTypeAliasSymbol(descriptor, signature) }, factory) typeAliasSymbolTable.declareIfNotExists(descriptor, { signature -> createTypeAliasSymbol(descriptor, signature) }, factory)
@@ -839,6 +861,7 @@ open class SymbolTable(
private fun createSimpleFunctionSymbol(descriptor: FunctionDescriptor, signature: IdSignature?): IrSimpleFunctionSymbol = private fun createSimpleFunctionSymbol(descriptor: FunctionDescriptor, signature: IdSignature?): IrSimpleFunctionSymbol =
signature?.let { IrSimpleFunctionPublicSymbolImpl(it, descriptor) } ?: IrSimpleFunctionSymbolImpl(descriptor) signature?.let { IrSimpleFunctionPublicSymbolImpl(it, descriptor) } ?: IrSimpleFunctionSymbolImpl(descriptor)
@ObsoleteDescriptorBasedAPI
fun declareSimpleFunction( fun declareSimpleFunction(
descriptor: FunctionDescriptor, descriptor: FunctionDescriptor,
functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction
@@ -862,6 +885,7 @@ open class SymbolTable(
) )
} }
@ObsoleteDescriptorBasedAPI
fun declareSimpleFunctionIfNotExists( fun declareSimpleFunctionIfNotExists(
descriptor: FunctionDescriptor, descriptor: FunctionDescriptor,
functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction
@@ -870,6 +894,7 @@ open class SymbolTable(
descriptor, { signature -> createSimpleFunctionSymbol(descriptor, signature) }, functionFactory descriptor, { signature -> createSimpleFunctionSymbol(descriptor, signature) }, functionFactory
) )
@ObsoleteDescriptorBasedAPI
fun declareSimpleFunctionFromLinker( fun declareSimpleFunctionFromLinker(
descriptor: FunctionDescriptor?, descriptor: FunctionDescriptor?,
sig: IdSignature, sig: IdSignature,
@@ -913,7 +938,7 @@ open class SymbolTable(
private fun createTypeParameterSymbol(descriptor: TypeParameterDescriptor, signature: IdSignature?): IrTypeParameterSymbol = private fun createTypeParameterSymbol(descriptor: TypeParameterDescriptor, signature: IdSignature?): IrTypeParameterSymbol =
signature?.let { IrTypeParameterPublicSymbolImpl(it, descriptor) } ?: IrTypeParameterSymbolImpl(descriptor) signature?.let { IrTypeParameterPublicSymbolImpl(it, descriptor) } ?: IrTypeParameterSymbolImpl(descriptor)
@OptIn(ObsoleteDescriptorBasedAPI::class) @ObsoleteDescriptorBasedAPI
fun declareGlobalTypeParameter( fun declareGlobalTypeParameter(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -940,7 +965,7 @@ open class SymbolTable(
return globalTypeParameterSymbolTable.declare(sig, symbolFactory, typeParameterFactory) return globalTypeParameterSymbolTable.declare(sig, symbolFactory, typeParameterFactory)
} }
@OptIn(ObsoleteDescriptorBasedAPI::class) @ObsoleteDescriptorBasedAPI
fun declareScopedTypeParameter( fun declareScopedTypeParameter(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -968,6 +993,7 @@ open class SymbolTable(
return typeParameterFactory(symbolFactory(sig)) return typeParameterFactory(symbolFactory(sig))
} }
@ObsoleteDescriptorBasedAPI
fun declareScopedTypeParameterFromLinker( fun declareScopedTypeParameterFromLinker(
descriptor: TypeParameterDescriptor, descriptor: TypeParameterDescriptor,
sig: IdSignature, sig: IdSignature,
@@ -984,7 +1010,7 @@ open class SymbolTable(
val unboundTypeParameters: Set<IrTypeParameterSymbol> get() = globalTypeParameterSymbolTable.unboundSymbols val unboundTypeParameters: Set<IrTypeParameterSymbol> get() = globalTypeParameterSymbolTable.unboundSymbols
@OptIn(ObsoleteDescriptorBasedAPI::class) @ObsoleteDescriptorBasedAPI
fun declareValueParameter( fun declareValueParameter(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -1034,6 +1060,7 @@ open class SymbolTable(
if (sig.isPubliclyVisible) IrTypeParameterPublicSymbolImpl(sig) else IrTypeParameterSymbolImpl() if (sig.isPubliclyVisible) IrTypeParameterPublicSymbolImpl(sig) else IrTypeParameterSymbolImpl()
} }
@ObsoleteDescriptorBasedAPI
fun declareVariable( fun declareVariable(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -1053,6 +1080,7 @@ open class SymbolTable(
variableFactory variableFactory
) )
@ObsoleteDescriptorBasedAPI
fun declareVariable( fun declareVariable(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -1065,9 +1093,11 @@ open class SymbolTable(
initializer = irInitializerExpression initializer = irInitializerExpression
} }
@ObsoleteDescriptorBasedAPI
override fun referenceVariable(descriptor: VariableDescriptor) = override fun referenceVariable(descriptor: VariableDescriptor) =
variableSymbolTable.referenced(descriptor) { throw AssertionError("Undefined variable referenced: $descriptor") } variableSymbolTable.referenced(descriptor) { throw AssertionError("Undefined variable referenced: $descriptor") }
@ObsoleteDescriptorBasedAPI
fun declareLocalDelegatedProperty( fun declareLocalDelegatedProperty(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
@@ -1088,6 +1118,7 @@ open class SymbolTable(
metadata = DescriptorMetadataSource.LocalDelegatedProperty(descriptor) metadata = DescriptorMetadataSource.LocalDelegatedProperty(descriptor)
} }
@ObsoleteDescriptorBasedAPI
fun referenceLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors) = fun referenceLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors) =
localDelegatedPropertySymbolTable.referenced(descriptor) { localDelegatedPropertySymbolTable.referenced(descriptor) {
throw AssertionError("Undefined local delegated property referenced: $descriptor") throw AssertionError("Undefined local delegated property referenced: $descriptor")
@@ -1109,6 +1140,7 @@ open class SymbolTable(
leaveScope(owner.symbol) leaveScope(owner.symbol)
} }
@ObsoleteDescriptorBasedAPI
open fun referenceValue(value: ValueDescriptor): IrValueSymbol = open fun referenceValue(value: ValueDescriptor): IrValueSymbol =
when (value) { when (value) {
is ParameterDescriptor -> is ParameterDescriptor ->
@@ -1153,7 +1185,6 @@ inline fun <T> SymbolTable.withScope(owner: IrDeclaration, block: SymbolTable.()
return result return result
} }
@ObsoleteDescriptorBasedAPI
inline fun <T> ReferenceSymbolTable.withReferenceScope(owner: IrSymbol, block: ReferenceSymbolTable.() -> T): T { inline fun <T> ReferenceSymbolTable.withReferenceScope(owner: IrSymbol, block: ReferenceSymbolTable.() -> T): T {
enterScope(owner) enterScope(owner)
val result = block() val result = block()
@@ -1182,7 +1213,6 @@ val SymbolTable.allUnbound: Set<IrSymbol>
return r.filter { !it.isBound }.toSet() return r.filter { !it.isBound }.toSet()
} }
@OptIn(ObsoleteDescriptorBasedAPI::class)
fun SymbolTable.noUnboundLeft(message: String) { fun SymbolTable.noUnboundLeft(message: String) {
val unbound = this.allUnbound val unbound = this.allUnbound
assert(unbound.isEmpty()) { assert(unbound.isEmpty()) {