From 4892737cc96cfd2d6d5c8d3790867b2596b24e29 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 28 Jul 2020 13:23:25 +0200 Subject: [PATCH] Use IrFactory in kotlin-serialization-compiler --- .../build.gradle.kts | 1 - .../compiler/backend/ir/GeneratorHelpers.kt | 20 +++++++++---------- .../backend/ir/SerializerIrGenerator.kt | 7 +++---- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts index 7e4433ca2ea..2a81fbf64b0 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts @@ -14,7 +14,6 @@ dependencies { compileOnly(project(":compiler:backend")) compileOnly(project(":compiler:ir.backend.common")) compileOnly(project(":compiler:ir.psi2ir")) - compileOnly(project(":compiler:ir.tree.impl")) compileOnly(project(":js:js.frontend")) compileOnly(project(":js:js.translator")) compileOnly(project(":kotlin-util-klib-metadata")) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt index ab2f85c0a9c..792f0909f31 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.builders.* import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.symbols.* @@ -236,7 +235,7 @@ interface IrBuilderExtension { if (declare) { with(propertyDescriptor) { - IrPropertyImpl( + propertyParent.factory.createProperty( propertyParent.startOffset, propertyParent.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, irPropertySymbol, name, visibility, modality, isVar, isConst, isLateInit, isDelegated, isExternal ).also { @@ -252,9 +251,9 @@ interface IrBuilderExtension { correspondingPropertySymbol = irPropertySymbol } val fieldSymbol = irProperty.backingField!!.symbol - irProperty.getter = propertyDescriptor.getter?.let { generatePropertyAccessor(it, fieldSymbol, declare) } + irProperty.getter = propertyDescriptor.getter?.let { generatePropertyAccessor(irProperty, it, fieldSymbol, declare) } ?.apply { parent = propertyParent } - irProperty.setter = propertyDescriptor.setter?.let { generatePropertyAccessor(it, fieldSymbol, declare) } + irProperty.setter = propertyDescriptor.setter?.let { generatePropertyAccessor(irProperty, it, fieldSymbol, declare) } ?.apply { parent = propertyParent } return irProperty } @@ -268,7 +267,7 @@ interface IrBuilderExtension { return with(descriptor) { // TODO: type parameters - IrFieldImpl( + originProperty.factory.createField( originProperty.startOffset, originProperty.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, fieldSymbol, name, type.toIrType(), visibility, !isVar, isEffectivelyExternal(), dispatchReceiverParameter == null ) @@ -276,6 +275,7 @@ interface IrBuilderExtension { } fun generatePropertyAccessor( + property: IrProperty, descriptor: PropertyAccessorDescriptor, fieldSymbol: IrFieldSymbol, declare: Boolean @@ -285,7 +285,7 @@ interface IrBuilderExtension { if (declare) { with(descriptor) { - IrFunctionImpl( + property.factory.createFunction( fieldSymbol.owner.startOffset, fieldSymbol.owner.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, symbol, name, visibility, modality, returnType!!.toIrType(), isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect @@ -317,7 +317,7 @@ interface IrBuilderExtension { val startOffset = irAccessor.startOffset val endOffset = irAccessor.endOffset - val irBody = IrBlockBodyImpl(startOffset, endOffset) + val irBody = irAccessor.factory.createBlockBody(startOffset, endOffset) val receiver = generateReceiverExpressionForFieldAccess(irAccessor.dispatchReceiverParameter!!.symbol, property) @@ -344,7 +344,7 @@ interface IrBuilderExtension { val irProperty = irAccessor.correspondingPropertySymbol?.owner ?: error("Expected corresponding property for accessor $setter") val startOffset = irAccessor.startOffset val endOffset = irAccessor.endOffset - val irBody = IrBlockBodyImpl(startOffset, endOffset) + val irBody = irAccessor.factory.createBlockBody(startOffset, endOffset) val receiver = generateReceiverExpressionForFieldAccess(irAccessor.dispatchReceiverParameter!!.symbol, property) @@ -383,7 +383,7 @@ interface IrBuilderExtension { ) { val function = this fun irValueParameter(descriptor: ParameterDescriptor): IrValueParameter = with(descriptor) { - IrValueParameterImpl( + factory.createValueParameter( function.startOffset, function.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, IrValueParameterSymbolImpl(this), name, indexOrMinusOne, type.toIrType(), varargElementType?.toIrType(), isCrossinline, isNoinline ).also { @@ -407,7 +407,7 @@ interface IrBuilderExtension { fun IrFunction.copyTypeParamsFromDescriptor() { val newTypeParameters = descriptor.typeParameters.map { - IrTypeParameterImpl( + factory.createTypeParameter( startOffset, endOffset, SERIALIZABLE_PLUGIN_ORIGIN, IrTypeParameterSymbolImpl(it), diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index 71caac3628c..fc446c0eedb 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.builders.* import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.IrAnonymousInitializerImpl import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.impl.IrBranchImpl @@ -75,15 +74,15 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil } } - val annonimousInit = irClass.run { + val anonymousInit = irClass.run { val symbol = IrAnonymousInitializerSymbolImpl(descriptor) - IrAnonymousInitializerImpl(startOffset, endOffset, SERIALIZABLE_PLUGIN_ORIGIN, symbol).also { + irClass.factory.createAnonymousInitializer(startOffset, endOffset, SERIALIZABLE_PLUGIN_ORIGIN, symbol).also { it.parent = this declarations.add(it) } } - annonimousInit.buildWithScope { initIrBody -> + anonymousInit.buildWithScope { initIrBody -> compilerContext.symbolTable.withReferenceScope(initIrBody.descriptor) { initIrBody.body = DeclarationIrBuilder(compilerContext, initIrBody.symbol, initIrBody.startOffset, initIrBody.endOffset).irBlockBody {