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) =
|
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
|
||||||
|
|||||||
+14
-5
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user