[FIR] Let FirErrorExpression have a working type if possible

^KT-65337 Fixed
This commit is contained in:
Nikolay Lunyak
2024-02-08 14:43:42 +02:00
committed by Space Team
parent 7f42596935
commit 389f02b016
8 changed files with 11 additions and 11 deletions
@@ -34,7 +34,8 @@ internal class FirErrorExpressionImpl(
override var nonExpressionElement: FirElement?,
) : FirErrorExpression() {
@OptIn(UnresolvedExpressionTypeAccess::class)
override var coneTypeOrNull: ConeKotlinType? = ConeErrorType(ConeStubDiagnostic(diagnostic))
override val coneTypeOrNull: ConeKotlinType?
get() = expression?.coneTypeOrNull ?: ConeErrorType(ConeStubDiagnostic(diagnostic))
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) }
@@ -54,9 +55,7 @@ internal class FirErrorExpressionImpl(
return this
}
override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) {
coneTypeOrNull = newConeTypeOrNull
}
override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) {}
override fun replaceAnnotations(newAnnotations: List<FirAnnotation>) {
annotations = newAnnotations.toMutableOrEmpty()
@@ -518,7 +518,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
}
impl(errorExpression) {
default("coneTypeOrNull", "ConeErrorType(ConeStubDiagnostic(diagnostic))")
default("coneTypeOrNull", "expression?.coneTypeOrNull ?: ConeErrorType(ConeStubDiagnostic(diagnostic))", withGetter = true)
additionalImports(coneErrorTypeType, coneStubDiagnosticType)
}