From 879cdd5952558654e259410b78c6427b71c8bb44 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Wed, 14 Feb 2024 11:49:36 +0100 Subject: [PATCH] [FIR] Fix flattening of substitution overrides of intersection overrides for subsumed check #KT-65555 Fixed --- .../DiagnosticCompilerTestFE10TestdataTestGenerated.java | 6 ++++++ ...versedDiagnosticCompilerFE10TestDataTestGenerated.java | 6 ++++++ .../FirLightTreeOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ .../FirPsiOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ .../jetbrains/kotlin/fir/declarations/declarationUtils.kt | 2 +- .../tests/override/clashesOnInheritance/kt65555.kt | 8 ++++++++ .../kotlin/test/runners/DiagnosticTestGenerated.java | 6 ++++++ 7 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 8a019d96126..a174a177cde 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -29157,6 +29157,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt13355viaJava.kt"); } + @Test + @TestMetadata("kt65555.kt") + public void testKt65555() throws Exception { + runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt"); + } + @Test @TestMetadata("kt9550.kt") public void testKt9550() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index a4a0d9938b9..5bffcd47001 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -29157,6 +29157,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt13355viaJava.kt"); } + @Test + @TestMetadata("kt65555.kt") + public void testKt65555() throws Exception { + runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt"); + } + @Test @TestMetadata("kt9550.kt") public void testKt9550() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index 6dacd20ea3e..329b4a4d7ba 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -26903,6 +26903,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt13355viaJava.kt"); } + @Test + @TestMetadata("kt65555.kt") + public void testKt65555() throws Exception { + runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt"); + } + @Test @TestMetadata("kt9550.kt") public void testKt9550() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 8ae29cfac24..14e338d9f13 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -26909,6 +26909,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt13355viaJava.kt"); } + @Test + @TestMetadata("kt65555.kt") + public void testKt65555() throws Exception { + runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt"); + } + @Test @TestMetadata("kt9550.kt") public void testKt9550() throws Exception { diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt index e9d4c267acb..e8b18314305 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt @@ -171,7 +171,7 @@ fun FirCallableSymbol<*>.dispatchReceiverScope(session: FirSession, scopeSession } fun MemberWithBaseScope>.flattenIntersectionsRecursively(): List>> { - if (member.origin != FirDeclarationOrigin.IntersectionOverride) return listOf(this) + if (member.unwrapSubstitutionOverrides>().origin != FirDeclarationOrigin.IntersectionOverride) return listOf(this) return baseScope.getDirectOverriddenMembersWithBaseScope(member).flatMap { it.flattenIntersectionsRecursively() } } diff --git a/compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt b/compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt new file mode 100644 index 00000000000..67d2705c79f --- /dev/null +++ b/compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt @@ -0,0 +1,8 @@ +// FIR_IDENTICAL +// FULL_JDK +// WITH_STDLIB +// ISSUE: KT-65555 + +interface MyCollection : Collection +interface MyList : MyCollection, List +interface MyMutableList : MyList, MutableList \ No newline at end of file diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index f6ed928212b..2f6b1bc4dae 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -29157,6 +29157,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt13355viaJava.kt"); } + @Test + @TestMetadata("kt65555.kt") + public void testKt65555() throws Exception { + runTest("compiler/testData/diagnostics/tests/override/clashesOnInheritance/kt65555.kt"); + } + @Test @TestMetadata("kt9550.kt") public void testKt9550() throws Exception {