[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 {
|
private fun BodyResolveComponents.typeFromSymbol(symbol: FirBasedSymbol<*>): FirResolvedTypeRef {
|
||||||
return when (symbol) {
|
return when (symbol) {
|
||||||
|
is FirSyntheticPropertySymbol -> typeFromSymbol(symbol.getterSymbol!!.delegateFunctionSymbol)
|
||||||
is FirCallableSymbol<*> -> {
|
is FirCallableSymbol<*> -> {
|
||||||
val returnTypeRef = returnTypeCalculator.tryCalculateReturnType(symbol.fir)
|
val returnTypeRef = returnTypeCalculator.tryCalculateReturnType(symbol.fir)
|
||||||
returnTypeRef.copyWithNewSource(null)
|
returnTypeRef.copyWithNewSource(null)
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ val FirCallableDeclaration.isSubstitutionOverride: Boolean get() = origin is Fir
|
|||||||
val FirCallableDeclaration.isSubstitutionOrIntersectionOverride: Boolean get() = isSubstitutionOverride || isIntersectionOverride
|
val FirCallableDeclaration.isSubstitutionOrIntersectionOverride: Boolean get() = isSubstitutionOverride || isIntersectionOverride
|
||||||
val FirCallableDeclaration.isDelegated: Boolean get() = origin == FirDeclarationOrigin.Delegated
|
val FirCallableDeclaration.isDelegated: Boolean get() = origin == FirDeclarationOrigin.Delegated
|
||||||
val FirCallableDeclaration.isCopyCreatedInScope: Boolean get() = isSubstitutionOrIntersectionOverride || isDelegated
|
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<*>.isIntersectionOverride: Boolean get() = origin == FirDeclarationOrigin.IntersectionOverride
|
||||||
val FirCallableSymbol<*>.isSubstitutionOverride: Boolean get() = origin is FirDeclarationOrigin.SubstitutionOverride
|
val FirCallableSymbol<*>.isSubstitutionOverride: Boolean get() = origin is FirDeclarationOrigin.SubstitutionOverride
|
||||||
|
|||||||
@@ -55,9 +55,9 @@ open class KotlinClass {
|
|||||||
|
|
||||||
class B : Java1() {
|
class B : Java1() {
|
||||||
override fun a(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.a()
|
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 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 e: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.e
|
||||||
override var f: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.f
|
override var f: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.f
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user