diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt index 591ca8dd2ff..113162bf534 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt @@ -176,7 +176,12 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: FunctionDescriptor, symbol: IrSimpleFunctionSymbol, defaultArgumentFactory: IrFunction.(IrValueParameter) -> IrExpressionBody? = { null } ): IrSimpleFunction { - val irFunction = IrFunctionImpl(startOffset, endOffset, origin, symbol, IrUninitializedType, descriptor) + val irFunction = with(descriptor) { + IrFunctionImpl( + startOffset, endOffset, origin, symbol, name, visibility, modality, IrUninitializedType, + isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect + ) + } irFunction.metadata = MetadataSource.Function(descriptor) symbolTable.withScope(descriptor) { @@ -207,4 +212,4 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { return irProperty } -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt index db9dcb7b693..8dbd5e991d3 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt @@ -9,12 +9,13 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer +import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.impl.carriers.FunctionCarrier import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol -import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.name.Name @@ -95,40 +96,6 @@ class IrFunctionImpl( ) : IrFunctionCommonImpl(startOffset, endOffset, origin, name, visibility, modality, returnType, isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect, isFakeOverride) { - constructor( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrSimpleFunctionSymbol, - returnType: IrType, - descriptor: FunctionDescriptor, - name: Name = descriptor.name - ) : this( - startOffset, endOffset, origin, symbol, - name = name, - visibility = descriptor.visibility, - modality = descriptor.modality, - returnType = returnType, - isInline = descriptor.isInline, - isExternal = descriptor.isExternal, - isTailrec = descriptor.isTailrec, - isSuspend = descriptor.isSuspend, - isOperator = descriptor.isOperator, - isExpect = descriptor.isExpect - ) - - // Used by kotlin-native in InteropLowering.kt and IrUtils2.kt - constructor( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - descriptor: FunctionDescriptor, - returnType: IrType - ) : this( - startOffset, endOffset, origin, - IrSimpleFunctionSymbolImpl(descriptor), returnType, descriptor - ) - @ObsoleteDescriptorBasedAPI override val descriptor: FunctionDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt index d8ed9c45005..b20e99da1ca 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt @@ -6,14 +6,11 @@ package org.jetbrains.kotlin.ir.util import org.jetbrains.kotlin.descriptors.FunctionDescriptor -import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrField import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl -import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType @ObsoleteDescriptorBasedAPI @@ -24,13 +21,13 @@ fun SymbolTable.declareSimpleFunctionWithOverrides( descriptor: FunctionDescriptor ) = declareSimpleFunction(descriptor) { - IrFunctionImpl( - startOffset, endOffset, origin, it, - returnType = IrUninitializedType, - descriptor = descriptor, - name = nameProvider.nameForDeclaration(descriptor), - ).apply { - metadata = MetadataSource.Function(descriptor) + with(descriptor) { + IrFunctionImpl( + startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(this), + visibility, modality, IrUninitializedType, isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect + ).also { declaration -> + declaration.metadata = MetadataSource.Function(this) + } } }.also { declaration -> generateOverriddenFunctionSymbols(declaration, this) 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 9c847aadcaa..e86207b2b07 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 @@ -281,14 +281,12 @@ interface IrBuilderExtension { assert(symbol.isBound || declare) if (declare) { - IrFunctionImpl( - fieldSymbol.owner.startOffset, - fieldSymbol.owner.endOffset, - SERIALIZABLE_PLUGIN_ORIGIN, - symbol, - descriptor.returnType!!.toIrType(), - descriptor - ).also { f -> + with(descriptor) { + IrFunctionImpl( + fieldSymbol.owner.startOffset, fieldSymbol.owner.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, symbol, + name, visibility, modality, returnType!!.toIrType(), isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect + ) + }.also { f -> generateOverriddenFunctionSymbols(f, compilerContext.symbolTable) f.createParameterDeclarations(receiver = null) f.returnType = descriptor.returnType!!.toIrType()