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) = override fun getDeclaration(symbol: IrSymbol) =
(symbol.descriptor as? FunctionClassDescriptor)?.let { descriptor -> (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 var module: IrModuleFragment? = null
@@ -122,24 +126,19 @@ internal class BuiltInFictitiousFunctionIrClassFactory(
) )
private fun createSimpleFunction( private fun createSimpleFunction(
descriptor: FunctionDescriptor, descriptor: FunctionDescriptor,
origin: IrDeclarationOrigin, origin: IrDeclarationOrigin,
returnType: IrType returnType: IrType
) = symbolTable?.declareSimpleFunction( ) = symbolTable?.declareSimpleFunction(descriptor) {
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
descriptor
) {
IrFunctionImpl( IrFunctionImpl(
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
it, it, returnType, descriptor
returnType
) )
} } ?: IrFunctionImpl(
?: IrFunctionImpl( SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin,
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin, descriptor,
descriptor, returnType
returnType )
)
private val createClassLambda = private val createClassLambda =
{ s: IrClassSymbol -> IrClassImpl(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, s) } { 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) { val superTypeSymbol = when (val superTypeDescriptor = superType.constructor.declarationDescriptor) {
is FunctionClassDescriptor -> buildClass(superTypeDescriptor) { is FunctionClassDescriptor -> buildClass(superTypeDescriptor) {
declareClass(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, superTypeDescriptor) declareClass(superTypeDescriptor) {
IrClassImpl(offset, offset, DECLARATION_ORIGIN_FUNCTION_CLASS, it, superTypeDescriptor)
}
}.symbol }.symbol
functionSymbol.descriptor -> functionSymbol functionSymbol.descriptor -> functionSymbol
kFunctionSymbol.descriptor -> kFunctionSymbol 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)) ?: functionDeclare(IrSimpleFunctionSymbolImpl(descriptor))
newFunction.parent = this newFunction.parent = this
@@ -9,11 +9,14 @@ import org.jetbrains.kotlin.backend.konan.InteropBuiltIns
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.builders.IrBuilder import org.jetbrains.kotlin.ir.builders.IrBuilder
import org.jetbrains.kotlin.ir.declarations.* 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.descriptors.IrBuiltIns
import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrSymbol 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.ir.util.*
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces
@@ -46,12 +49,15 @@ internal interface DescriptorToIrTranslationMixin {
* Additional elements are passed via [builder] callback. * Additional elements are passed via [builder] callback.
*/ */
fun createClass(descriptor: ClassDescriptor, builder: (IrClass) -> Unit): IrClass = fun createClass(descriptor: ClassDescriptor, builder: (IrClass) -> Unit): IrClass =
symbolTable.declareClass( symbolTable.declareClass(descriptor) {
IrClassImpl(
startOffset = SYNTHETIC_OFFSET, startOffset = SYNTHETIC_OFFSET,
endOffset = SYNTHETIC_OFFSET, endOffset = SYNTHETIC_OFFSET,
origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB, origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
symbol = it,
descriptor = descriptor descriptor = descriptor
).also { irClass -> )
}.also { irClass ->
symbolTable.withScope(descriptor) { symbolTable.withScope(descriptor) {
irClass.superTypes += descriptor.typeConstructor.supertypes.map { irClass.superTypes += descriptor.typeConstructor.supertypes.map {
it.toIrType() it.toIrType()
@@ -78,10 +84,13 @@ internal interface DescriptorToIrTranslationMixin {
} }
fun createConstructor(constructorDescriptor: ClassConstructorDescriptor): IrConstructor { fun createConstructor(constructorDescriptor: ClassConstructorDescriptor): IrConstructor {
val irConstructor = symbolTable.declareConstructor( val irConstructor = symbolTable.declareConstructor(constructorDescriptor) {
IrConstructorImpl(
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB, constructorDescriptor IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
) it, IrUninitializedType, constructorDescriptor
)
}
irConstructor.valueParameters += constructorDescriptor.valueParameters.map { valueParameterDescriptor -> irConstructor.valueParameters += constructorDescriptor.valueParameters.map { valueParameterDescriptor ->
symbolTable.declareValueParameter( symbolTable.declareValueParameter(
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, IrDeclarationOrigin.DEFINED, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, IrDeclarationOrigin.DEFINED,