From e9005e4fed0566e0cee04bfe90601bd514d5a2e5 Mon Sep 17 00:00:00 2001 From: Wojciech Litewka Date: Thu, 7 Mar 2024 11:54:06 +0100 Subject: [PATCH] [IR] Initialize IrFunction.returnType eagerly, when possible --- .../jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt | 3 +-- .../kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt | 3 +-- .../backend/konan/ir/interop/DescriptorToIrTranslationUtils.kt | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt index 1e2ef13bf76..9f55c853edb 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt @@ -296,7 +296,7 @@ internal class FunctionGenerator(declarationGenerator: DeclarationGenerator) : D visibility = visibility, isInline = isInline, isExpect = isExpect, - returnType = null, + returnType = constructorDescriptor.returnType.toIrType(), symbol = it, isPrimary = isPrimary, isExternal = isEffectivelyExternal(), @@ -310,7 +310,6 @@ internal class FunctionGenerator(declarationGenerator: DeclarationGenerator) : D if (context.configuration.generateBodies) { irConstructor.body = createBodyGenerator(irConstructor.symbol).generateBody(irConstructor) } - irConstructor.returnType = constructorDescriptor.returnType.toIrType() } } 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 268ad36ad7a..2aed4106bcc 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 @@ -180,7 +180,7 @@ internal class StandaloneDeclarationGenerator(private val context: GeneratorCont visibility = visibility, isInline = isInline, isExpect = isExpect, - returnType = null, + returnType = descriptor.returnType.toIrType(), symbol = symbol, isPrimary = isPrimary, isExternal = isEffectivelyExternal(), @@ -192,7 +192,6 @@ internal class StandaloneDeclarationGenerator(private val context: GeneratorCont val ctorTypeParameters = descriptor.typeParameters.filter { it.containingDeclaration === descriptor } generateScopedTypeParameterDeclarations(irConstructor, ctorTypeParameters) generateValueParameterDeclarations(irConstructor, descriptor, defaultArgumentFactory) - irConstructor.returnType = descriptor.returnType.toIrType() } return irConstructor diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/DescriptorToIrTranslationUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/DescriptorToIrTranslationUtils.kt index 3b67e931441..f9c8a62a619 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/DescriptorToIrTranslationUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/DescriptorToIrTranslationUtils.kt @@ -94,7 +94,7 @@ internal interface DescriptorToIrTranslationMixin { visibility, isInline, isExpect, - null, + constructorDescriptor.returnType.toIrType(), it, isPrimary, isEffectivelyExternal(), @@ -109,7 +109,6 @@ internal interface DescriptorToIrTranslationMixin { it.parent = irConstructor } } - irConstructor.returnType = constructorDescriptor.returnType.toIrType() irConstructor.generateAnnotations() return irConstructor }