Get rid of deprecated IR SymbolTable API usages
(cherry picked from commit 018db1956283a1d06ebdafec88a9eb975a7ef407)
This commit is contained in:
committed by
Vasily Levchenko
parent
fa46d02ec8
commit
f3a0435a3a
+20
-19
@@ -42,7 +42,11 @@ internal class BuiltInFictitiousFunctionIrClassFactory(
|
||||
|
||||
override fun getDeclaration(symbol: IrSymbol) =
|
||||
(symbol.descriptor as? FunctionClassDescriptor)?.let { descriptor ->
|
||||
buildClass(descriptor) { declareClass(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, descriptor) }
|
||||
buildClass(descriptor) {
|
||||
declareClass(descriptor) {
|
||||
IrClassImpl(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, it, descriptor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var module: IrModuleFragment? = null
|
||||
@@ -122,24 +126,19 @@ internal class BuiltInFictitiousFunctionIrClassFactory(
|
||||
)
|
||||
|
||||
private fun createSimpleFunction(
|
||||
descriptor: FunctionDescriptor,
|
||||
origin: IrDeclarationOrigin,
|
||||
returnType: IrType
|
||||
) = symbolTable?.declareSimpleFunction(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
|
||||
descriptor
|
||||
) {
|
||||
descriptor: FunctionDescriptor,
|
||||
origin: IrDeclarationOrigin,
|
||||
returnType: IrType
|
||||
) = symbolTable?.declareSimpleFunction(descriptor) {
|
||||
IrFunctionImpl(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
|
||||
it,
|
||||
returnType
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
|
||||
it, returnType, descriptor
|
||||
)
|
||||
}
|
||||
?: IrFunctionImpl(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
|
||||
descriptor,
|
||||
returnType
|
||||
)
|
||||
} ?: IrFunctionImpl(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
|
||||
descriptor,
|
||||
returnType
|
||||
)
|
||||
|
||||
private val createClassLambda =
|
||||
{ s: IrClassSymbol -> IrClassImpl(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, s) }
|
||||
@@ -169,7 +168,9 @@ internal class BuiltInFictitiousFunctionIrClassFactory(
|
||||
}
|
||||
val superTypeSymbol = when (val superTypeDescriptor = superType.constructor.declarationDescriptor) {
|
||||
is FunctionClassDescriptor -> buildClass(superTypeDescriptor) {
|
||||
declareClass(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, superTypeDescriptor)
|
||||
declareClass(superTypeDescriptor) {
|
||||
IrClassImpl(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, it, superTypeDescriptor)
|
||||
}
|
||||
}.symbol
|
||||
functionSymbol.descriptor -> functionSymbol
|
||||
kFunctionSymbol.descriptor -> kFunctionSymbol
|
||||
@@ -278,7 +279,7 @@ internal class BuiltInFictitiousFunctionIrClassFactory(
|
||||
}
|
||||
}
|
||||
|
||||
val newFunction = symbolTable?.declareSimpleFunction(offset, offset, memberOrigin, descriptor, functionDeclare)
|
||||
val newFunction = symbolTable?.declareSimpleFunction(descriptor, functionDeclare)
|
||||
?: functionDeclare(IrSimpleFunctionSymbolImpl(descriptor))
|
||||
|
||||
newFunction.parent = this
|
||||
|
||||
+14
-5
@@ -9,11 +9,14 @@ import org.jetbrains.kotlin.backend.konan.InteropBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.builders.IrBuilder
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrConstructorImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces
|
||||
@@ -46,12 +49,15 @@ internal interface DescriptorToIrTranslationMixin {
|
||||
* Additional elements are passed via [builder] callback.
|
||||
*/
|
||||
fun createClass(descriptor: ClassDescriptor, builder: (IrClass) -> Unit): IrClass =
|
||||
symbolTable.declareClass(
|
||||
symbolTable.declareClass(descriptor) {
|
||||
IrClassImpl(
|
||||
startOffset = SYNTHETIC_OFFSET,
|
||||
endOffset = SYNTHETIC_OFFSET,
|
||||
origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
|
||||
symbol = it,
|
||||
descriptor = descriptor
|
||||
).also { irClass ->
|
||||
)
|
||||
}.also { irClass ->
|
||||
symbolTable.withScope(descriptor) {
|
||||
irClass.superTypes += descriptor.typeConstructor.supertypes.map {
|
||||
it.toIrType()
|
||||
@@ -78,10 +84,13 @@ internal interface DescriptorToIrTranslationMixin {
|
||||
}
|
||||
|
||||
fun createConstructor(constructorDescriptor: ClassConstructorDescriptor): IrConstructor {
|
||||
val irConstructor = symbolTable.declareConstructor(
|
||||
val irConstructor = symbolTable.declareConstructor(constructorDescriptor) {
|
||||
IrConstructorImpl(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
|
||||
IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB, constructorDescriptor
|
||||
)
|
||||
IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
|
||||
it, IrUninitializedType, constructorDescriptor
|
||||
)
|
||||
}
|
||||
irConstructor.valueParameters += constructorDescriptor.valueParameters.map { valueParameterDescriptor ->
|
||||
symbolTable.declareValueParameter(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, IrDeclarationOrigin.DEFINED,
|
||||
|
||||
Reference in New Issue
Block a user