[k2, dfa] Use transitive closure of dependsOn for stability checks

This commit is contained in:
Dmitry Savvinov
2024-01-25 18:52:18 +01:00
committed by Space Team
parent 337330f8c8
commit f28863b983
2 changed files with 4 additions and 7 deletions
@@ -7,14 +7,11 @@ package org.jetbrains.kotlin.fir.resolve.dfa
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.moduleData
import org.jetbrains.kotlin.fir.originalOrSelf
import org.jetbrains.kotlin.fir.references.FirThisReference
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.toSymbol
@@ -215,7 +212,7 @@ class VariableStorageImpl(private val session: FirSession) : VariableStorage() {
return when (propertyModuleData) {
currentModuleData,
in currentModuleData.friendDependencies,
in currentModuleData.dependsOnDependencies,
in currentModuleData.allDependsOnDependencies,
-> PropertyStability.STABLE_VALUE
else -> PropertyStability.ALIEN_PUBLIC_PROPERTY
}
@@ -20,7 +20,7 @@ fun isCast(d: Direct, t: Transitive) {
}
if (t.finalProperty is String) {
<!SMARTCAST_IMPOSSIBLE!>t.finalProperty<!>.length
t.finalProperty.length
}
}
@@ -29,5 +29,5 @@ fun asCast(d: Direct, t: Transitive) {
d.finalProperty.length
t.finalProperty as String
<!SMARTCAST_IMPOSSIBLE!>t.finalProperty<!>.length
t.finalProperty.length
}