[FIR2IR] Use backing field to read property if no getter

This commit is contained in:
Mikhail Glukhikh
2020-03-16 15:21:54 +03:00
parent b6fdd6197a
commit 53cb9035b6
@@ -65,11 +65,13 @@ internal class CallGenerator(
) )
symbol is IrPropertySymbol && symbol.isBound -> { symbol is IrPropertySymbol && symbol.isBound -> {
val getter = symbol.owner.getter val getter = symbol.owner.getter
if (getter != null) { val backingField = symbol.owner.backingField
IrCallImpl(startOffset, endOffset, type, getter.symbol, origin = IrStatementOrigin.GET_PROPERTY) when {
} else { getter != null -> IrCallImpl(startOffset, endOffset, type, getter.symbol, origin = IrStatementOrigin.GET_PROPERTY)
IrErrorCallExpressionImpl( backingField != null -> IrGetFieldImpl(startOffset, endOffset, backingField.symbol, type)
startOffset, endOffset, type, "No getter found for ${qualifiedAccess.calleeReference.render()}" else -> IrErrorCallExpressionImpl(
startOffset, endOffset, type,
description = "No getter or backing field found for ${qualifiedAccess.calleeReference.render()}"
) )
} }
} }