From 311975f1ed7d30f616c9bee7ae5fd4cde6f22366 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Mon, 26 Jun 2023 14:42:17 +0300 Subject: [PATCH] [FIR] Set source on return expression in generated getters #KT-55835 --- .../expression/FirFunctionReturnTypeMismatchChecker.kt | 4 +++- .../src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt index 512a5bbe732..d116a83542d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt @@ -24,7 +24,9 @@ import org.jetbrains.kotlin.fir.types.* object FirFunctionReturnTypeMismatchChecker : FirReturnExpressionChecker() { override fun check(expression: FirReturnExpression, context: CheckerContext, reporter: DiagnosticReporter) { - if (expression.source == null) return + // checked in FirDelegatedPropertyChecker + if (expression.source?.kind == KtFakeSourceElementKind.DelegatedPropertyAccessor) return + val targetElement = expression.target.labeledElement if (targetElement is FirErrorFunction || targetElement is FirAnonymousFunction && targetElement.isLambda) { return diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt index 9b92fc269e4..ab0af7b5683 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt @@ -448,6 +448,7 @@ fun FirPropertyBuilder.generateAccessorsByDelegate( origin = FirFunctionCallOrigin.Operator } target = returnTarget + source = fakeSource } ) if (annotations != null) { @@ -671,4 +672,4 @@ fun buildBalancedOrExpressionTree(conditions: List, lower: Int = fun AnnotationUseSiteTarget?.appliesToPrimaryConstructorParameter() = this == null || this == AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER || this == AnnotationUseSiteTarget.RECEIVER || - this == AnnotationUseSiteTarget.FILE \ No newline at end of file + this == AnnotationUseSiteTarget.FILE