diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index bab83b22503..ad3799cdbda 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -348,6 +348,7 @@ fun BodyResolveComponents.typeFromCallee(access: FirElement, calleeReference: Fi private fun BodyResolveComponents.typeFromSymbol(symbol: FirBasedSymbol<*>): FirResolvedTypeRef { return when (symbol) { + is FirSyntheticPropertySymbol -> typeFromSymbol(symbol.getterSymbol!!.delegateFunctionSymbol) is FirCallableSymbol<*> -> { val returnTypeRef = returnTypeCalculator.tryCalculateReturnType(symbol.fir) returnTypeRef.copyWithNewSource(null) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt index 880af4266d6..3297f5bc2ef 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt @@ -74,7 +74,7 @@ val FirCallableDeclaration.isSubstitutionOverride: Boolean get() = origin is Fir val FirCallableDeclaration.isSubstitutionOrIntersectionOverride: Boolean get() = isSubstitutionOverride || isIntersectionOverride val FirCallableDeclaration.isDelegated: Boolean get() = origin == FirDeclarationOrigin.Delegated val FirCallableDeclaration.isCopyCreatedInScope: Boolean get() = isSubstitutionOrIntersectionOverride || isDelegated -val FirCallableDeclaration.canHaveDeferredReturnTypeCalculation: Boolean get() = isCopyCreatedInScope || origin == FirDeclarationOrigin.Enhancement +val FirCallableDeclaration.canHaveDeferredReturnTypeCalculation: Boolean get() = isCopyCreatedInScope || origin == FirDeclarationOrigin.Enhancement || origin == FirDeclarationOrigin.Synthetic.JavaProperty val FirCallableSymbol<*>.isIntersectionOverride: Boolean get() = origin == FirDeclarationOrigin.IntersectionOverride val FirCallableSymbol<*>.isSubstitutionOverride: Boolean get() = origin is FirDeclarationOrigin.SubstitutionOverride diff --git a/compiler/testData/diagnostics/tests/j+k/kjkImplicitReturnType.fir.kt b/compiler/testData/diagnostics/tests/j+k/kjkImplicitReturnType.fir.kt index c193eeb4ac6..ee98a98aa78 100644 --- a/compiler/testData/diagnostics/tests/j+k/kjkImplicitReturnType.fir.kt +++ b/compiler/testData/diagnostics/tests/j+k/kjkImplicitReturnType.fir.kt @@ -55,9 +55,9 @@ open class KotlinClass { class B : Java1() { override fun a(): String? = super.a() - override val b: String? = super.b + override val b: String? = super.b override var c: String? = super.c - override var d: String? = super.d + override var d: String? = super.d override var e: String? = super.e override var f: String? = super.f }