[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.Modality
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.expressions.* 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.references.FirThisReference
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
@@ -215,7 +212,7 @@ class VariableStorageImpl(private val session: FirSession) : VariableStorage() {
return when (propertyModuleData) { return when (propertyModuleData) {
currentModuleData, currentModuleData,
in currentModuleData.friendDependencies, in currentModuleData.friendDependencies,
in currentModuleData.dependsOnDependencies, in currentModuleData.allDependsOnDependencies,
-> PropertyStability.STABLE_VALUE -> PropertyStability.STABLE_VALUE
else -> PropertyStability.ALIEN_PUBLIC_PROPERTY else -> PropertyStability.ALIEN_PUBLIC_PROPERTY
} }
@@ -20,7 +20,7 @@ fun isCast(d: Direct, t: Transitive) {
} }
if (t.finalProperty is String) { 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 d.finalProperty.length
t.finalProperty as String t.finalProperty as String
<!SMARTCAST_IMPOSSIBLE!>t.finalProperty<!>.length t.finalProperty.length
} }