[FIR] Support deferred return type computation for synthetic properties
#KT-66048 Fixed
This commit is contained in:
committed by
Space Team
parent
973e337bf5
commit
89ecb92551
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -55,9 +55,9 @@ open class KotlinClass {
|
||||
|
||||
class B : Java1() {
|
||||
override fun a(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.a()
|
||||
override val b: String? = super.b
|
||||
override val b: <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.b
|
||||
override var c: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.c
|
||||
override var d: String? = super.d
|
||||
override var d: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.d
|
||||
override var e: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.e
|
||||
override var f: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.f
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user