[FIR2IR] Pass value parameter name to createDefaultSetterParameter if it exists

This commit is contained in:
Ivan Kochurkin
2022-05-04 23:54:16 +03:00
parent feb3f41108
commit e004c8e2d6
4 changed files with 11 additions and 8 deletions
@@ -299,11 +299,12 @@ class Fir2IrDeclarationStorage(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
type: IrType, type: IrType,
parent: IrFunction parent: IrFunction,
name: Name? = null
): IrValueParameter { ): IrValueParameter {
return irFactory.createValueParameter( return irFactory.createValueParameter(
startOffset, endOffset, IrDeclarationOrigin.DEFINED, IrValueParameterSymbolImpl(), startOffset, endOffset, IrDeclarationOrigin.DEFINED, IrValueParameterSymbolImpl(),
SpecialNames.IMPLICIT_SET_PARAMETER, 0, type, name ?: SpecialNames.IMPLICIT_SET_PARAMETER, 0, type,
varargElementType = null, varargElementType = null,
isCrossinline = false, isNoinline = false, isCrossinline = false, isNoinline = false,
isHidden = false, isAssignable = false isHidden = false, isAssignable = false
@@ -88,13 +88,15 @@ class Fir2IrLazyPropertyAccessor(
) )
if (isSetter) { if (isSetter) {
val valueParameter = firAccessor?.valueParameters?.firstOrNull()
add( add(
declarationStorage.createDefaultSetterParameter( declarationStorage.createDefaultSetterParameter(
startOffset, endOffset, startOffset, endOffset,
(firAccessor?.valueParameters?.firstOrNull()?.returnTypeRef ?: firParentProperty.returnTypeRef).toIrType( (valueParameter?.returnTypeRef ?: firParentProperty.returnTypeRef).toIrType(
typeConverter, conversionTypeContext typeConverter, conversionTypeContext
), ),
parent = this@Fir2IrLazyPropertyAccessor parent = this@Fir2IrLazyPropertyAccessor,
name = valueParameter?.name
) )
) )
} }
@@ -2,7 +2,7 @@ FILE fqName:k fileName:/box.kt
PROPERTY name:p1 visibility:public modality:FINAL [delegated,var] 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] FIELD PROPERTY_DELEGATE name:p1$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]
EXPRESSION_BODY EXPRESSION_BODY
PROPERTY_REFERENCE 'public open foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun <get-foo> (): @[FlexibleNullability] kotlin.String? declared in <root>.J' setter='public open fun <set-foo> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.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 <get-foo> (): @[FlexibleNullability] kotlin.String? declared in <root>.J' setter='public open fun <set-foo> (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
$this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null $this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p1> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String? FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p1> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [delegated,var] 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] 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] FIELD PROPERTY_DELEGATE name:p2$delegate type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> visibility:private [final,static]
EXPRESSION_BODY EXPRESSION_BODY
PROPERTY_REFERENCE 'public open foo: @[FlexibleNullability] kotlin.String? [var]' field=null getter='public open fun <get-foo> (): @[FlexibleNullability] kotlin.String? declared in <root>.J' setter='public open fun <set-foo> (<set-?>: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.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 <get-foo> (): @[FlexibleNullability] kotlin.String? declared in <root>.J' setter='public open fun <set-foo> (s: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.J' type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
$this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null $this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p2> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String? FUN DELEGATED_PROPERTY_ACCESSOR name:<get-p2> visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var] correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [delegated,var]
@@ -96,7 +96,7 @@ FILE fqName:<root> fileName:/genericClassInDifferentModule_m2.kt
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-bar> visibility:public modality:FINAL <> ($this:<root>.Derived1<T of <root>.Derived1>, <set-?>:T of <root>.Derived1) returnType:kotlin.Unit FUN DEFAULT_PROPERTY_ACCESSOR name:<set-bar> visibility:public modality:FINAL <> ($this:<root>.Derived1<T of <root>.Derived1>, <set-?>:T of <root>.Derived1) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [var] correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [var]
overridden: overridden:
public final fun <set-bar> (<set-?>: T of <root>.Base): kotlin.Unit declared in <root>.Base public final fun <set-bar> (value: T of <root>.Base): kotlin.Unit declared in <root>.Base
$this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1> $this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1>
VALUE_PARAMETER name:<set-?> index:0 type:T of <root>.Derived1 VALUE_PARAMETER name:<set-?> index:0 type:T of <root>.Derived1
BLOCK_BODY BLOCK_BODY
@@ -120,7 +120,7 @@ FILE fqName:<root> fileName:/genericClassInDifferentModule_m2.kt
FUN name:<set-exn> visibility:public modality:FINAL <Z> ($this:<root>.Derived1<T of <root>.Derived1>, $receiver:Z of <root>.Derived1.<set-exn>, value:T of <root>.Derived1) returnType:kotlin.Unit FUN name:<set-exn> visibility:public modality:FINAL <Z> ($this:<root>.Derived1<T of <root>.Derived1>, $receiver:Z of <root>.Derived1.<set-exn>, value:T of <root>.Derived1) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:exn visibility:public modality:FINAL [var] correspondingProperty: PROPERTY name:exn visibility:public modality:FINAL [var]
overridden: overridden:
public final fun <set-exn> <Z> (<set-?>: T of <root>.Base): kotlin.Unit declared in <root>.Base public final fun <set-exn> <Z> (value: T of <root>.Base): kotlin.Unit declared in <root>.Base
TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?] reified:false TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?] reified:false
$this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1> $this: VALUE_PARAMETER name:<this> type:<root>.Derived1<T of <root>.Derived1>
$receiver: VALUE_PARAMETER name:<this> type:Z of <root>.Derived1.<set-exn> $receiver: VALUE_PARAMETER name:<this> type:Z of <root>.Derived1.<set-exn>