From f28863b98352d69968c02331d48caa0d0574a510 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Thu, 25 Jan 2024 18:52:18 +0100 Subject: [PATCH] [k2, dfa] Use transitive closure of dependsOn for stability checks --- .../kotlin/fir/resolve/dfa/VariableStorageImpl.kt | 7 ++----- .../variables/propertyFromDependsOnModule.fir.kt | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/VariableStorageImpl.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/VariableStorageImpl.kt index 8cd15f7bd61..2c86aa77e17 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/VariableStorageImpl.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/VariableStorageImpl.kt @@ -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 } diff --git a/compiler/testData/diagnostics/tests/smartCasts/variables/propertyFromDependsOnModule.fir.kt b/compiler/testData/diagnostics/tests/smartCasts/variables/propertyFromDependsOnModule.fir.kt index 66e1747ed23..0c75017b1c6 100644 --- a/compiler/testData/diagnostics/tests/smartCasts/variables/propertyFromDependsOnModule.fir.kt +++ b/compiler/testData/diagnostics/tests/smartCasts/variables/propertyFromDependsOnModule.fir.kt @@ -20,7 +20,7 @@ fun isCast(d: Direct, t: Transitive) { } if (t.finalProperty is String) { - t.finalProperty.length + t.finalProperty.length } } @@ -29,5 +29,5 @@ fun asCast(d: Direct, t: Transitive) { d.finalProperty.length t.finalProperty as String - t.finalProperty.length + t.finalProperty.length }