Get rid of deprecated IR SymbolTable API usages

(cherry picked from commit 018db1956283a1d06ebdafec88a9eb975a7ef407)
This commit is contained in:
Mikhail Glukhikh
2020-05-25 10:04:10 +03:00
committed by Vasily Levchenko
parent fa46d02ec8
commit f3a0435a3a
2 changed files with 34 additions and 24 deletions
@@ -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
@@ -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,