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

Also remove optIn annotation from IrPluginContext.symbolTable
This commit is contained in:
Dmitriy Novozhilov
2022-06-15 14:39:56 +03:00
committed by teamcity
parent 8227a35a33
commit a30216c655
13 changed files with 56 additions and 4 deletions
@@ -486,7 +486,6 @@ class Fir2IrConverter(
override val symbols: BuiltinSymbolsBase,
override val platform: TargetPlatform?,
override val irBuiltIns: IrBuiltIns,
@property:ObsoleteDescriptorBasedAPI
override val symbolTable: SymbolTable
) : IrPluginContext {
@ObsoleteDescriptorBasedAPI
@@ -29,7 +29,6 @@ interface IrPluginContext : IrGeneratorContext {
@ObsoleteDescriptorBasedAPI
val bindingContext: BindingContext
@ObsoleteDescriptorBasedAPI
val symbolTable: ReferenceSymbolTable
@ObsoleteDescriptorBasedAPI
@@ -43,7 +43,7 @@ open class IrPluginContextImpl constructor(
@OptIn(ObsoleteDescriptorBasedAPI::class)
override val moduleDescriptor: ModuleDescriptor = module
@OptIn(ObsoleteDescriptorBasedAPI::class)
override val symbolTable: ReferenceSymbolTable = st
private fun resolveMemberScope(fqName: FqName): MemberScope? {
@@ -95,6 +95,7 @@ open class IrPluginContextImpl constructor(
return symbols
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
override fun referenceClass(fqName: FqName): IrClassSymbol? {
assert(!fqName.isRoot)
return resolveSymbol(fqName.parent()) { scope ->
@@ -105,6 +106,7 @@ open class IrPluginContextImpl constructor(
}
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
override fun referenceTypeAlias(fqName: FqName): IrTypeAliasSymbol? {
assert(!fqName.isRoot)
return resolveSymbol(fqName.parent()) { scope ->
@@ -120,6 +122,7 @@ open class IrPluginContextImpl constructor(
return classSymbol.owner.declarations.filterIsInstance<IrConstructor>().map { it.symbol }
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
override fun referenceFunctions(fqName: FqName): Collection<IrSimpleFunctionSymbol> {
assert(!fqName.isRoot)
return resolveSymbolCollection(fqName.parent()) { scope ->
@@ -128,6 +131,7 @@ open class IrPluginContextImpl constructor(
}
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
override fun referenceProperties(fqName: FqName): Collection<IrPropertySymbol> {
assert(!fqName.isRoot)
return resolveSymbolCollection(fqName.parent()) { scope ->
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.backend.js.utils.isDispatchReceiver
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
@@ -51,6 +52,7 @@ interface JsCommonBackendContext : CommonBackendContext {
// TODO: investigate if it could be removed
internal fun <T> BackendContext.lazy2(fn: () -> T) = lazy { irFactory.stageController.withInitialIr(fn) }
@OptIn(ObsoleteDescriptorBasedAPI::class)
class JsCommonCoroutineSymbols(
symbolTable: SymbolTable,
val module: ModuleDescriptor,
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.backend.js
import org.jetbrains.kotlin.builtins.PrimitiveType
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.backend.js.utils.getJsName
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrProperty
@@ -24,6 +25,7 @@ import org.jetbrains.kotlin.psi2ir.findSingleFunction
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import java.util.*
@OptIn(ObsoleteDescriptorBasedAPI::class)
class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendContext) {
// TODO: Should we drop operator intrinsics in favor of IrDynamicOperatorExpression?
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.backend.js.codegen.JsGenerationGranularity
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
@@ -56,6 +57,7 @@ enum class IcCompatibleIr2Js(val isCompatible: Boolean, val incrementalCacheEnab
IC_MODE(true, true)
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
class JsIrBackendContext(
val module: ModuleDescriptor,
override val irBuiltIns: IrBuiltIns,
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.ir.backend.js.lower.calls
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
import org.jetbrains.kotlin.ir.util.irCall
@@ -15,6 +16,7 @@ import org.jetbrains.kotlin.name.Name
class ExceptionHelperCallsTransformer(private val context: JsIrBackendContext) : CallsTransformer {
// TODO: move symbol resolve into context
@OptIn(ObsoleteDescriptorBasedAPI::class)
private fun referenceFunction(fqn: FqName) =
context.getFunctions(fqn).singleOrNull()?.let {
context.symbolTable.referenceSimpleFunction(it)
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.backend.js.ReflectionSymbols
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
@@ -26,6 +27,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import java.lang.IllegalArgumentException
@OptIn(ObsoleteDescriptorBasedAPI::class)
class WasmSymbols(
context: WasmBackendContext,
private val symbolTable: SymbolTable
@@ -311,4 +313,4 @@ class WasmSymbols(
fun getKFunctionType(type: IrType, list: List<IrType>): IrType {
return irBuiltIns.functionN(list.size).typeWith(list + type)
}
}
}
@@ -7,11 +7,13 @@ package org.jetbrains.kotlin.ir.declarations.lazy
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.IrLock
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable
import org.jetbrains.kotlin.ir.util.SymbolTable
@OptIn(ObsoleteDescriptorBasedAPI::class)
class IrLazySymbolTable(private val originalTable: SymbolTable) : ReferenceSymbolTable by originalTable {
val lock: IrLock get() = originalTable.lock
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.descriptors.NotFoundClasses
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
@@ -53,6 +54,7 @@ abstract class ConstantValueGenerator(
startOffset, endOffset, constantValue, valueParameter.type, valueParameter.varargElementType
)
@OptIn(ObsoleteDescriptorBasedAPI::class)
private fun generateConstantOrAnnotationValueAsExpression(
startOffset: Int,
endOffset: Int,
@@ -147,6 +149,7 @@ abstract class ConstantValueGenerator(
}
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
fun generateAnnotationConstructorCall(annotationDescriptor: AnnotationDescriptor, realType: KotlinType? = null): IrConstructorCall? {
val annotationType = realType ?: annotationDescriptor.type
val annotationClassDescriptor = annotationType.constructor.declarationDescriptor
@@ -354,6 +354,7 @@ fun IrValueParameter.hasDefaultValue(): Boolean = DFS.ifAny(
{ current -> current.defaultValue != null }
)
@ObsoleteDescriptorBasedAPI
fun ReferenceSymbolTable.referenceClassifier(classifier: ClassifierDescriptor): IrClassifierSymbol =
when (classifier) {
is TypeParameterDescriptor ->
@@ -366,6 +367,7 @@ fun ReferenceSymbolTable.referenceClassifier(classifier: ClassifierDescriptor):
throw IllegalArgumentException("Unexpected classifier descriptor: $classifier")
}
@ObsoleteDescriptorBasedAPI
fun ReferenceSymbolTable.referenceFunction(callable: CallableDescriptor): IrFunctionSymbol =
when (callable) {
is ClassConstructorDescriptor ->
@@ -24,33 +24,51 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal
import org.jetbrains.kotlin.utils.threadLocal
interface ReferenceSymbolTable {
@ObsoleteDescriptorBasedAPI
fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol
fun referenceClass(sig: IdSignature, reg: Boolean = true): IrClassSymbol
@ObsoleteDescriptorBasedAPI
fun referenceScript(descriptor: ScriptDescriptor): IrScriptSymbol
@ObsoleteDescriptorBasedAPI
fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol
fun referenceConstructor(sig: IdSignature, reg: Boolean = true): IrConstructorSymbol
@ObsoleteDescriptorBasedAPI
fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol
fun referenceEnumEntry(sig: IdSignature, reg: Boolean = true): IrEnumEntrySymbol
@ObsoleteDescriptorBasedAPI
fun referenceField(descriptor: PropertyDescriptor): IrFieldSymbol
fun referenceField(sig: IdSignature, reg: Boolean = true): IrFieldSymbol
@ObsoleteDescriptorBasedAPI
fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol
fun referenceProperty(sig: IdSignature, reg: Boolean = true): IrPropertySymbol
@ObsoleteDescriptorBasedAPI
fun referenceProperty(descriptor: PropertyDescriptor, generate: () -> IrProperty): IrProperty
@ObsoleteDescriptorBasedAPI
fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol
fun referenceSimpleFunction(sig: IdSignature, reg: Boolean = true): IrSimpleFunctionSymbol
@ObsoleteDescriptorBasedAPI
fun referenceDeclaredFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol
@ObsoleteDescriptorBasedAPI
fun referenceValueParameter(descriptor: ParameterDescriptor): IrValueParameterSymbol
@ObsoleteDescriptorBasedAPI
fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol
fun referenceTypeParameter(sig: IdSignature, reg: Boolean = true): IrTypeParameterSymbol
@ObsoleteDescriptorBasedAPI
fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol
fun referenceVariable(descriptor: VariableDescriptor): IrVariableSymbol
@ObsoleteDescriptorBasedAPI
fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol
fun referenceTypeAlias(sig: IdSignature, reg: Boolean = true): IrTypeAliasSymbol
@@ -430,6 +448,7 @@ open class SymbolTable(
)
}
@ObsoleteDescriptorBasedAPI
override fun referenceScript(descriptor: ScriptDescriptor): IrScriptSymbol =
scriptSymbolTable.referenced(descriptor) { IrScriptSymbolImpl(descriptor) }
@@ -476,6 +495,7 @@ open class SymbolTable(
}
}
@ObsoleteDescriptorBasedAPI
override fun referenceClass(descriptor: ClassDescriptor): IrClassSymbol =
@Suppress("Reformat")
// This is needed for cases like kt46069.kt, where psi2ir creates descriptor-less IR elements for adapted function references.
@@ -548,6 +568,7 @@ open class SymbolTable(
constructorSymbolTable.set(sig, symbol)
}
@ObsoleteDescriptorBasedAPI
override fun referenceConstructor(descriptor: ClassConstructorDescriptor): IrConstructorSymbol =
constructorSymbolTable.referenced(descriptor) { signature -> createConstructorSymbol(descriptor, signature) }
@@ -614,6 +635,7 @@ open class SymbolTable(
}
}
@ObsoleteDescriptorBasedAPI
override fun referenceEnumEntry(descriptor: ClassDescriptor): IrEnumEntrySymbol =
enumEntrySymbolTable.referenced(descriptor) { signature -> createEnumEntrySymbol(descriptor, signature) }
@@ -687,6 +709,7 @@ open class SymbolTable(
fieldSymbolTable.set(sig, symbol)
}
@ObsoleteDescriptorBasedAPI
override fun referenceField(descriptor: PropertyDescriptor): IrFieldSymbol =
fieldSymbolTable.referenced(descriptor) { signature -> createFieldSymbol(descriptor, signature) }
@@ -702,6 +725,7 @@ open class SymbolTable(
@Deprecated(message = "Use declareProperty/referenceProperty", level = DeprecationLevel.WARNING)
val propertyTable = HashMap<PropertyDescriptor, IrProperty>()
@ObsoleteDescriptorBasedAPI
override fun referenceProperty(descriptor: PropertyDescriptor, generate: () -> IrProperty): IrProperty =
@Suppress("DEPRECATION")
propertyTable.getOrPut(descriptor, generate)
@@ -768,6 +792,7 @@ open class SymbolTable(
propertySymbolTable.set(sig, symbol)
}
@ObsoleteDescriptorBasedAPI
override fun referenceProperty(descriptor: PropertyDescriptor): IrPropertySymbol =
propertySymbolTable.referenced(descriptor) { signature -> createPropertySymbol(descriptor, signature) }
@@ -785,6 +810,7 @@ open class SymbolTable(
private fun createTypeAliasSymbol(descriptor: TypeAliasDescriptor, signature: IdSignature?): IrTypeAliasSymbol =
signature?.let { IrTypeAliasPublicSymbolImpl(it, descriptor) } ?: IrTypeAliasSymbolImpl(descriptor)
@ObsoleteDescriptorBasedAPI
override fun referenceTypeAlias(descriptor: TypeAliasDescriptor): IrTypeAliasSymbol =
typeAliasSymbolTable.referenced(descriptor) { signature -> createTypeAliasSymbol(descriptor, signature) }
@@ -862,6 +888,7 @@ open class SymbolTable(
simpleFunctionSymbolTable.set(sig, symbol)
}
@ObsoleteDescriptorBasedAPI
override fun referenceSimpleFunction(descriptor: FunctionDescriptor): IrSimpleFunctionSymbol =
simpleFunctionSymbolTable.referenced(descriptor) { signature -> createSimpleFunctionSymbol(descriptor, signature) }
@@ -877,6 +904,7 @@ open class SymbolTable(
}
}
@ObsoleteDescriptorBasedAPI
override fun referenceDeclaredFunction(descriptor: FunctionDescriptor) =
simpleFunctionSymbolTable.referenced(descriptor) { throw AssertionError("Function is not declared: $descriptor") }
@@ -986,15 +1014,18 @@ open class SymbolTable(
valueParameterSymbolTable.introduceLocal(irValueParameter.descriptor, irValueParameter.symbol)
}
@ObsoleteDescriptorBasedAPI
override fun referenceValueParameter(descriptor: ParameterDescriptor) =
valueParameterSymbolTable.referenced(descriptor) {
throw AssertionError("Undefined parameter referenced: $descriptor\n${valueParameterSymbolTable.dump()}")
}
@ObsoleteDescriptorBasedAPI
override fun referenceTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol =
scopedTypeParameterSymbolTable.get(classifier, signaturer.composeSignature(classifier))
?: globalTypeParameterSymbolTable.referenced(classifier) { signature -> createTypeParameterSymbol(classifier, signature) }
@ObsoleteDescriptorBasedAPI
override fun referenceScopedTypeParameter(classifier: TypeParameterDescriptor): IrTypeParameterSymbol =
scopedTypeParameterSymbolTable.referenced(classifier) { signature -> createTypeParameterSymbol(classifier, signature) }
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
import org.jetbrains.kotlin.diagnostics.impl.SimpleDiagnosticsCollector
import org.jetbrains.kotlin.idea.MainFunctionDetector
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.util.SymbolTable
@@ -187,6 +188,7 @@ open class KJvmReplCompilerBase<AnalyzerT : ReplCodeAnalyzerBase>(
return generationState
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
private fun generateWithBackendIr(
compilationState: ReplCompilationState<AnalyzerT>,
sourceFiles: List<KtFile>,