From e004c8e2d6f420ef763d62ae5b2a1926d4f3bb63 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Wed, 4 May 2022 23:54:16 +0300 Subject: [PATCH] [FIR2IR] Pass value parameter name to createDefaultSetterParameter if it exists --- .../kotlin/fir/backend/Fir2IrDeclarationStorage.kt | 5 +++-- .../jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt | 6 ++++-- .../declarations/provideDelegate/javaDelegate.fir.ir.txt | 4 ++-- .../irText/stubs/genericClassInDifferentModule.fir.ir.txt | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 9cd6bccca07..045e13e504d 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -299,11 +299,12 @@ class Fir2IrDeclarationStorage( startOffset: Int, endOffset: Int, type: IrType, - parent: IrFunction + parent: IrFunction, + name: Name? = null ): IrValueParameter { return irFactory.createValueParameter( startOffset, endOffset, IrDeclarationOrigin.DEFINED, IrValueParameterSymbolImpl(), - SpecialNames.IMPLICIT_SET_PARAMETER, 0, type, + name ?: SpecialNames.IMPLICIT_SET_PARAMETER, 0, type, varargElementType = null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt index 0b3930cc39f..cd83bcd24ba 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt @@ -88,13 +88,15 @@ class Fir2IrLazyPropertyAccessor( ) if (isSetter) { + val valueParameter = firAccessor?.valueParameters?.firstOrNull() add( declarationStorage.createDefaultSetterParameter( startOffset, endOffset, - (firAccessor?.valueParameters?.firstOrNull()?.returnTypeRef ?: firParentProperty.returnTypeRef).toIrType( + (valueParameter?.returnTypeRef ?: firParentProperty.returnTypeRef).toIrType( typeConverter, conversionTypeContext ), - parent = this@Fir2IrLazyPropertyAccessor + parent = this@Fir2IrLazyPropertyAccessor, + name = valueParameter?.name ) ) } diff --git a/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.fir.ir.txt b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.fir.ir.txt index bd73b9143cf..51c32a61f6f 100644 --- a/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.fir.ir.txt +++ b/compiler/testData/ir/irText/declarations/provideDelegate/javaDelegate.fir.ir.txt @@ -2,7 +2,7 @@ FILE fqName:k fileName:/box.kt PROPERTY name:p1 visibility:public modality:FINAL [delegated,var] FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static] EXPRESSION_BODY - PROPERTY_REFERENCE 'public open foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun (): @[FlexibleNullability] kotlin.String? declared in .J' setter='public open fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null + PROPERTY_REFERENCE 'public open foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun (): @[FlexibleNullability] kotlin.String? declared in .J' setter='public open fun (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null $this: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .J' type=.J origin=null FUN DELEGATED_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String? correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var] @@ -26,7 +26,7 @@ FILE fqName:k fileName:/box.kt PROPERTY name:p2 visibility:public modality:FINAL [delegated,var] FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static] EXPRESSION_BODY - PROPERTY_REFERENCE 'public open foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun (): @[FlexibleNullability] kotlin.String? declared in .J' setter='public open fun (: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null + PROPERTY_REFERENCE 'public open foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun (): @[FlexibleNullability] kotlin.String? declared in .J' setter='public open fun (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null $this: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .J' type=.J origin=null FUN DELEGATED_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String? correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var] diff --git a/compiler/testData/ir/irText/stubs/genericClassInDifferentModule.fir.ir.txt b/compiler/testData/ir/irText/stubs/genericClassInDifferentModule.fir.ir.txt index 730a3a134b2..153a1f49f1c 100644 --- a/compiler/testData/ir/irText/stubs/genericClassInDifferentModule.fir.ir.txt +++ b/compiler/testData/ir/irText/stubs/genericClassInDifferentModule.fir.ir.txt @@ -96,7 +96,7 @@ FILE fqName: fileName:/genericClassInDifferentModule_m2.kt FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.Derived1.Derived1>, :T of .Derived1) returnType:kotlin.Unit correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [var] overridden: - public final fun (: T of .Base): kotlin.Unit declared in .Base + public final fun (value: T of .Base): kotlin.Unit declared in .Base $this: VALUE_PARAMETER name: type:.Derived1.Derived1> VALUE_PARAMETER name: index:0 type:T of .Derived1 BLOCK_BODY @@ -120,7 +120,7 @@ FILE fqName: fileName:/genericClassInDifferentModule_m2.kt FUN name: visibility:public modality:FINAL ($this:.Derived1.Derived1>, $receiver:Z of .Derived1., value:T of .Derived1) returnType:kotlin.Unit correspondingProperty: PROPERTY name:exn visibility:public modality:FINAL [var] overridden: - public final fun (: T of .Base): kotlin.Unit declared in .Base + public final fun (value: T of .Base): kotlin.Unit declared in .Base TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?] reified:false $this: VALUE_PARAMETER name: type:.Derived1.Derived1> $receiver: VALUE_PARAMETER name: type:Z of .Derived1.