diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt index 5a9ec59f2ac..b07cea46eb2 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt @@ -6,8 +6,8 @@ package org.jetbrains.kotlin.backend.common.serialization import org.jetbrains.kotlin.backend.common.LoggingContext -import org.jetbrains.kotlin.backend.common.lower.InnerClassesSupport import org.jetbrains.kotlin.backend.common.ir.ir2string +import org.jetbrains.kotlin.backend.common.lower.InnerClassesSupport import org.jetbrains.kotlin.backend.common.overrides.PlatformFakeOverrideClassFilter import org.jetbrains.kotlin.backend.common.peek import org.jetbrains.kotlin.backend.common.pop @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.backend.common.serialization.proto.IrVarargElement.V import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.* +import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl import org.jetbrains.kotlin.ir.descriptors.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.* @@ -113,6 +113,7 @@ abstract class IrFileDeserializer( private val deserializeFakeOverrides: Boolean, private val fakeOverrideQueue: MutableList ) { + private val irFactory: IrFactory get() = symbolTable.irFactory abstract fun deserializeIrSymbolToDeclare(code: Long): Pair abstract fun deserializeIrSymbol(code: Long): IrSymbol @@ -960,7 +961,7 @@ abstract class IrFileDeserializer( val flags = TypeParameterFlags.decode(proto.base.flags) val factory = { symbol: IrTypeParameterSymbol -> - IrTypeParameterImpl( + irFactory.createTypeParameter( coordinates.startOffset, coordinates.endOffset, deserializeIrDeclarationOrigin(proto.base.originName), @@ -1002,7 +1003,7 @@ abstract class IrFileDeserializer( withDeserializedIrDeclarationBase(proto.base) { symbol, _, startOffset, endOffset, origin, fcode -> val flags = ValueParameterFlags.decode(fcode) val nameAndType = BinaryNameAndType.decode(proto.nameType) - IrValueParameterImpl( + irFactory.createValueParameter( startOffset, endOffset, origin, symbol as IrValueParameterSymbol, deserializeName(nameAndType.nameIndex), @@ -1025,20 +1026,20 @@ abstract class IrFileDeserializer( val flags = ClassFlags.decode(fcode) symbolTable.declareClassFromLinker((symbol as IrClassSymbol).descriptor, signature) { - IrClassImpl( + irFactory.createClass( startOffset, endOffset, origin, it, deserializeName(proto.name), flags.kind, flags.visibility, flags.modality, - isCompanion = flags.isCompanion, - isInner = flags.isInner, - isData = flags.isData, - isExternal = flags.isExternal, - isInline = flags.isInline, - isExpect = flags.isExpect, - isFun = flags.isFun + flags.isCompanion, + flags.isInner, + flags.isData, + flags.isExternal, + flags.isInline, + flags.isExpect, + flags.isFun, ) }.usingParent { typeParameters = deserializeTypeParameters(proto.typeParameterList, true) @@ -1066,7 +1067,7 @@ abstract class IrFileDeserializer( symbolTable.declareTypeAliasFromLinker((symbol as IrTypeAliasSymbol).descriptor, uniqId) { val flags = TypeAliasFlags.decode(fcode) val nameType = BinaryNameAndType.decode(proto.nameType) - IrTypeAliasImpl( + irFactory.createTypeAlias( startOffset, endOffset, it, deserializeName(nameType.nameIndex), @@ -1186,7 +1187,7 @@ abstract class IrFileDeserializer( val flags = FunctionFlags.decode(fcode) symbolTable.declareSimpleFunctionFromLinker(symbol.descriptor, idSig) { val nameType = BinaryNameAndType.decode(proto.base.nameType) - IrFunctionImpl( + irFactory.createFunction( startOffset, endOffset, origin, it, deserializeName(nameType.nameIndex), @@ -1233,7 +1234,7 @@ abstract class IrFileDeserializer( private fun deserializeIrEnumEntry(proto: ProtoEnumEntry): IrEnumEntry = withDeserializedIrDeclarationBase(proto.base) { symbol, uniqId, startOffset, endOffset, origin, _ -> symbolTable.declareEnumEntryFromLinker((symbol as IrEnumEntrySymbol).descriptor, uniqId) { - IrEnumEntryImpl(startOffset, endOffset, origin, it, deserializeName(proto.name)) + irFactory.createEnumEntry(startOffset, endOffset, origin, it, deserializeName(proto.name)) }.apply { if (proto.hasCorrespondingClass()) correspondingClass = deserializeIrClass(proto.correspondingClass) @@ -1246,7 +1247,7 @@ abstract class IrFileDeserializer( private fun deserializeIrAnonymousInit(proto: ProtoAnonymousInit): IrAnonymousInitializer = withDeserializedIrDeclarationBase(proto.base) { symbol, _, startOffset, endOffset, origin, _ -> - IrAnonymousInitializerImpl(startOffset, endOffset, origin, symbol as IrAnonymousInitializerSymbol).apply { + irFactory.createAnonymousInitializer(startOffset, endOffset, origin, symbol as IrAnonymousInitializerSymbol).apply { // body = deserializeBlockBody(proto.body.blockBody, startOffset, endOffset) body = deserializeStatementBody(proto.body) as IrBlockBody @@ -1259,7 +1260,7 @@ abstract class IrFileDeserializer( val flags = FunctionFlags.decode(fcode) val nameType = BinaryNameAndType.decode(proto.base.nameType) symbolTable.declareConstructorFromLinker((symbol as IrConstructorSymbol).descriptor, idSig) { - IrConstructorImpl( + irFactory.createConstructor( startOffset, endOffset, origin, it, deserializeName(nameType.nameIndex), @@ -1283,7 +1284,7 @@ abstract class IrFileDeserializer( val type = deserializeIrType(nameType.typeIndex) val flags = FieldFlags.decode(fcode) symbolTable.declareFieldFromLinker((symbol as IrFieldSymbol).descriptor, uniqId) { - IrFieldImpl( + irFactory.createField( startOffset, endOffset, origin, it, deserializeName(nameType.nameIndex), @@ -1308,7 +1309,7 @@ abstract class IrFileDeserializer( withDeserializedIrDeclarationBase(proto.base) { symbol, _, startOffset, endOffset, origin, fcode -> val flags = LocalVariableFlags.decode(fcode) val nameAndType = BinaryNameAndType.decode(proto.nameType) - IrLocalDelegatedPropertyImpl( + irFactory.createLocalDelegatedProperty( startOffset, endOffset, origin, symbol as IrLocalDelegatedPropertySymbol, deserializeName(nameAndType.nameIndex), @@ -1328,7 +1329,7 @@ abstract class IrFileDeserializer( withDeserializedIrDeclarationBase(proto.base) { symbol, uniqId, startOffset, endOffset, origin, fcode -> val flags = PropertyFlags.decode(fcode) symbolTable.declarePropertyFromLinker((symbol as IrPropertySymbol).descriptor, uniqId) { - IrPropertyImpl( + irFactory.createProperty( startOffset, endOffset, origin, it, deserializeName(proto.name),