From 53cb9035b63784bc61441566d89404b7d6a4b2b6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 16 Mar 2020 15:21:54 +0300 Subject: [PATCH] [FIR2IR] Use backing field to read property if no getter --- .../kotlin/fir/backend/generators/CallGenerator.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallGenerator.kt index 14bb8632153..16c7f63d253 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallGenerator.kt @@ -65,11 +65,13 @@ internal class CallGenerator( ) symbol is IrPropertySymbol && symbol.isBound -> { val getter = symbol.owner.getter - if (getter != null) { - IrCallImpl(startOffset, endOffset, type, getter.symbol, origin = IrStatementOrigin.GET_PROPERTY) - } else { - IrErrorCallExpressionImpl( - startOffset, endOffset, type, "No getter found for ${qualifiedAccess.calleeReference.render()}" + val backingField = symbol.owner.backingField + when { + getter != null -> IrCallImpl(startOffset, endOffset, type, getter.symbol, origin = IrStatementOrigin.GET_PROPERTY) + backingField != null -> IrGetFieldImpl(startOffset, endOffset, backingField.symbol, type) + else -> IrErrorCallExpressionImpl( + startOffset, endOffset, type, + description = "No getter or backing field found for ${qualifiedAccess.calleeReference.render()}" ) } }