[FIR] Assume smartacsts on member properties from friend modules as stable
^KT-57893 Fixed
This commit is contained in:
committed by
Space Team
parent
0d1500f23f
commit
f8ef478647
+6
@@ -29764,6 +29764,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("smartcastInFriendModule.kt")
|
||||||
|
public void testSmartcastInFriendModule() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartcastInFriendModule.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
||||||
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
||||||
|
|||||||
+6
@@ -29764,6 +29764,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
|||||||
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("smartcastInFriendModule.kt")
|
||||||
|
public void testSmartcastInFriendModule() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartcastInFriendModule.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
||||||
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
||||||
|
|||||||
+6
@@ -29764,6 +29764,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
|||||||
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("smartcastInFriendModule.kt")
|
||||||
|
public void testSmartcastInFriendModule() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartcastInFriendModule.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
||||||
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
||||||
|
|||||||
+6
@@ -29860,6 +29860,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("smartcastInFriendModule.kt")
|
||||||
|
public void testSmartcastInFriendModule() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartcastInFriendModule.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
||||||
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
||||||
|
|||||||
+3
-1
@@ -176,7 +176,9 @@ class VariableStorageImpl(private val session: FirSession) : VariableStorage() {
|
|||||||
val propertyModuleData = property.originalOrSelf().moduleData
|
val propertyModuleData = property.originalOrSelf().moduleData
|
||||||
val currentModuleData = session.moduleData
|
val currentModuleData = session.moduleData
|
||||||
when (propertyModuleData) {
|
when (propertyModuleData) {
|
||||||
currentModuleData, in currentModuleData.dependsOnDependencies -> PropertyStability.STABLE_VALUE
|
currentModuleData,
|
||||||
|
in currentModuleData.friendDependencies,
|
||||||
|
in currentModuleData.dependsOnDependencies -> PropertyStability.STABLE_VALUE
|
||||||
else -> PropertyStability.ALIEN_PUBLIC_PROPERTY
|
else -> PropertyStability.ALIEN_PUBLIC_PROPERTY
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
// ISSUE: KT-57893
|
||||||
|
// MODULE: main
|
||||||
|
internal class A {
|
||||||
|
val x: String? = null
|
||||||
|
}
|
||||||
|
|
||||||
|
class B {
|
||||||
|
internal val x: String? = null
|
||||||
|
}
|
||||||
|
|
||||||
|
class C {
|
||||||
|
val x: String? = null
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: test()(main)
|
||||||
|
internal fun test(a: A, b: B, c: C) {
|
||||||
|
if (a.x != null) {
|
||||||
|
a.x.length
|
||||||
|
}
|
||||||
|
if (b.x != null) {
|
||||||
|
b.x.length
|
||||||
|
}
|
||||||
|
if (c.x != null) {
|
||||||
|
c.x.length
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// ISSUE: KT-57893
|
||||||
|
// MODULE: main
|
||||||
|
internal class A {
|
||||||
|
val x: String? = null
|
||||||
|
}
|
||||||
|
|
||||||
|
class B {
|
||||||
|
internal val x: String? = null
|
||||||
|
}
|
||||||
|
|
||||||
|
class C {
|
||||||
|
val x: String? = null
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: test()(main)
|
||||||
|
internal fun test(a: A, b: B, c: C) {
|
||||||
|
if (a.x != null) {
|
||||||
|
<!DEBUG_INFO_SMARTCAST!>a.x<!>.length
|
||||||
|
}
|
||||||
|
if (b.x != null) {
|
||||||
|
<!DEBUG_INFO_SMARTCAST!>b.x<!>.length
|
||||||
|
}
|
||||||
|
if (c.x != null) {
|
||||||
|
<!SMARTCAST_IMPOSSIBLE!>c.x<!>.length
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+6
@@ -30626,6 +30626,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartCastOnWhen.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("smartcastInFriendModule.kt")
|
||||||
|
public void testSmartcastInFriendModule() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/smartCasts/smartcastInFriendModule.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
@TestMetadata("smartcastOnSameFieldOfDifferentInstances.kt")
|
||||||
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
public void testSmartcastOnSameFieldOfDifferentInstances() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user