diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt index 00c356a4512..790dc82bb11 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt @@ -2049,20 +2049,21 @@ open class PsiRawFirBuilder( isExternal = hasModifier(EXTERNAL_KEYWORD) } - if (hasDelegate()) { - fun extractDelegateExpression() = - buildOrLazyExpression(this@toFirProperty.delegate?.expression?.toFirSourceElement(KtFakeSourceElementKind.WrappedDelegate)) { - this@toFirProperty.delegate?.expression?.let { expression -> - expression.toFirExpression("Should have delegate") - } ?: buildErrorExpression { + val psiPropertyDelegate = this@toFirProperty.delegate + if (psiPropertyDelegate != null) { + fun extractDelegateExpression(): FirExpression { + return buildOrLazyExpression(psiPropertyDelegate.expression?.toFirSourceElement(KtFakeSourceElementKind.WrappedDelegate)) { + psiPropertyDelegate.expression?.toFirExpression("Should have delegate") ?: buildErrorExpression { diagnostic = ConeSimpleDiagnostic("Should have delegate", DiagnosticKind.ExpressionExpected) } } + } val delegateBuilder = FirWrappedDelegateExpressionBuilder().apply { val delegateExpression = extractDelegateExpression() - source = delegateExpression.source?.fakeElement(KtFakeSourceElementKind.WrappedDelegate) - ?: this@toFirProperty.delegate?.toFirSourceElement(KtFakeSourceElementKind.WrappedDelegate) + source = (psiPropertyDelegate.expression ?: psiPropertyDelegate) + .toFirSourceElement(KtFakeSourceElementKind.WrappedDelegate) + expression = delegateExpression }