[FIR] Ignore smartcast for non-final members from Java, ^KT-50219 Fixed

This commit is contained in:
Ivan Kochurkin
2021-12-14 23:55:51 +03:00
committed by teamcity
parent 84927e10b0
commit ee7e04b28e
8 changed files with 68 additions and 0 deletions
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.utils.isFinal
import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
@@ -179,6 +180,7 @@ class VariableStorageImpl(private val session: FirSession) : VariableStorage() {
}
if (originalFir is FirThisReceiverExpression) return PropertyStability.STABLE_VALUE
if (this !is FirVariableSymbol<*>) return null
if (this is FirFieldSymbol && !this.isFinal) return PropertyStability.MUTABLE_PROPERTY
val property = this.fir as? FirProperty ?: return PropertyStability.STABLE_VALUE