FIR resolve: set setter value-parameter type properly

This commit is contained in:
Simon Ogorodnik
2019-05-20 19:55:16 +03:00
committed by Mikhail Glukhikh
parent 38d3438101
commit 58873b2d7b
5 changed files with 15 additions and 13 deletions
@@ -938,7 +938,9 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
if (property.returnTypeRef !is FirImplicitTypeRef && implicitTypeOnly) return property.compose()
return withScopeCleanup(localScopes) {
localScopes.addIfNotNull(primaryConstructorParametersScope)
transformVariable(property, data)
(transformVariable(property, data).single as FirProperty).apply {
setter?.let { it.valueParameters[0].transformReturnTypeRef(StoreType, property.returnTypeRef) }
}.compose()
}
}
+2 -2
View File
@@ -133,10 +133,10 @@ FILE fqName:<root> fileName:/initVar.kt
RETURN type=kotlin.Nothing from='public final fun <get-x> (): kotlin.Int declared in <root>.TestInitVarWithCustomSetter'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public ' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.TestInitVarWithCustomSetter declared in <root>.TestInitVarWithCustomSetter.<get-x>' type=<root>.TestInitVarWithCustomSetter origin=null
FUN name:<set-x> visibility:public modality:FINAL <> ($this:<root>.TestInitVarWithCustomSetter, value:IrErrorType) returnType:kotlin.Unit
FUN name:<set-x> visibility:public modality:FINAL <> ($this:<root>.TestInitVarWithCustomSetter, value:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:x visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.TestInitVarWithCustomSetter
VALUE_PARAMETER name:value index:0 type:IrErrorType
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
ERROR_CALL 'Unresolved reference: <Unresolved name: field>#' type=IrErrorType
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean
@@ -53,10 +53,10 @@ FILE fqName:<root> fileName:/classLevelProperties.kt
RETURN type=kotlin.Nothing from='public final fun <get-test4> (): kotlin.Int declared in <root>.C'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test4 type:kotlin.Int visibility:public ' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<get-test4>' type=<root>.C origin=null
FUN name:<set-test4> visibility:public modality:FINAL <> ($this:<root>.C, value:IrErrorType) returnType:kotlin.Unit
FUN name:<set-test4> visibility:public modality:FINAL <> ($this:<root>.C, value:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:value index:0 type:IrErrorType
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
ERROR_CALL 'Unresolved reference: <Unresolved name: field>#' type=IrErrorType
PROPERTY name:test5 visibility:public modality:FINAL [var]
@@ -70,10 +70,10 @@ FILE fqName:<root> fileName:/classLevelProperties.kt
RETURN type=kotlin.Nothing from='public final fun <get-test5> (): kotlin.Int declared in <root>.C'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test5 type:kotlin.Int visibility:public ' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.<get-test5>' type=<root>.C origin=null
FUN name:<set-test5> visibility:private modality:FINAL <> ($this:<root>.C, value:IrErrorType) returnType:kotlin.Unit
FUN name:<set-test5> visibility:private modality:FINAL <> ($this:<root>.C, value:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:test5 visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:value index:0 type:IrErrorType
VALUE_PARAMETER name:value index:0 type:kotlin.Int
PROPERTY name:test6 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test6 type:kotlin.Int visibility:public [final]
EXPRESSION_BODY
@@ -38,9 +38,9 @@ FILE fqName:<root> fileName:/packageLevelProperties.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test4> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test4 type:kotlin.Int visibility:public [static] ' type=kotlin.Int origin=null
FUN name:<set-test4> visibility:public modality:FINAL <> (value:IrErrorType) returnType:kotlin.Unit
FUN name:<set-test4> visibility:public modality:FINAL <> (value:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [var]
VALUE_PARAMETER name:value index:0 type:IrErrorType
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
ERROR_CALL 'Unresolved reference: <Unresolved name: field>#' type=IrErrorType
PROPERTY name:test5 visibility:public modality:FINAL [var]
@@ -52,9 +52,9 @@ FILE fqName:<root> fileName:/packageLevelProperties.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test5> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test5 type:kotlin.Int visibility:public [static] ' type=kotlin.Int origin=null
FUN name:<set-test5> visibility:private modality:FINAL <> (value:IrErrorType) returnType:kotlin.Unit
FUN name:<set-test5> visibility:private modality:FINAL <> (value:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:test5 visibility:public modality:FINAL [var]
VALUE_PARAMETER name:value index:0 type:IrErrorType
VALUE_PARAMETER name:value index:0 type:kotlin.Int
PROPERTY name:test6 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test6 type:kotlin.Int visibility:public [final,static]
EXPRESSION_BODY
@@ -131,9 +131,9 @@ FILE fqName:<root> fileName:/propertyReferences.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-varWithBackingFieldAndAccessors> (): kotlin.Int declared in <root>'
ERROR_CALL 'Unresolved reference: <Unresolved name: field>#' type=IrErrorType
FUN name:<set-varWithBackingFieldAndAccessors> visibility:public modality:FINAL <> (value:IrErrorType) returnType:kotlin.Unit
FUN name:<set-varWithBackingFieldAndAccessors> visibility:public modality:FINAL <> (value:kotlin.Int) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:varWithBackingFieldAndAccessors visibility:public modality:FINAL [var]
VALUE_PARAMETER name:value index:0 type:IrErrorType
VALUE_PARAMETER name:value index:0 type:kotlin.Int
BLOCK_BODY
ERROR_CALL 'Unresolved reference: <Unresolved name: field>#' type=IrErrorType
PROPERTY name:test_varWithBackingFieldAndAccessors visibility:public modality:FINAL [val]