From 5cbe699fc4a877c6ec9ab0c46fb821c16817528e Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Wed, 8 Mar 2023 11:54:53 +0200 Subject: [PATCH] [FIR] KT-56876: Ensure inner type classifiers are resolved in contracts ^KT-56876 Fixed --- ...CompilerTestFE10TestdataTestGenerated.java | 6 +++++ ...eeOldFrontendDiagnosticsTestGenerated.java | 6 +++++ ...siOldFrontendDiagnosticsTestGenerated.java | 6 +++++ .../testData/diagnostics/tests/kt56876.kt | 23 +++++++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 6 +++++ 5 files changed, 47 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/kt56876.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 9d66a27416c..f225c560614 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -525,6 +525,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/kt56769.kt"); } + @Test + @TestMetadata("kt56876.kt") + public void testKt56876() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt56876.kt"); + } + @Test @TestMetadata("kt56877.kt") public void testKt56877() 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 0456a450a9b..e41166b7a51 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 @@ -525,6 +525,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/kt56769.kt"); } + @Test + @TestMetadata("kt56876.kt") + public void testKt56876() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt56876.kt"); + } + @Test @TestMetadata("kt56877.kt") public void testKt56877() 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 da2f9ef8026..88f7e03093b 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 @@ -525,6 +525,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/kt56769.kt"); } + @Test + @TestMetadata("kt56876.kt") + public void testKt56876() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt56876.kt"); + } + @Test @TestMetadata("kt56877.kt") public void testKt56877() throws Exception { diff --git a/compiler/testData/diagnostics/tests/kt56876.kt b/compiler/testData/diagnostics/tests/kt56876.kt new file mode 100644 index 00000000000..188c526c17a --- /dev/null +++ b/compiler/testData/diagnostics/tests/kt56876.kt @@ -0,0 +1,23 @@ +// FIR_IDENTICAL + +@file:OptIn(ExperimentalContracts::class) + +import kotlin.contracts.* + +open class Result { + class Success : Result() + + fun isSuccess1(arg: Result): Boolean { + contract { + returns(true) implies (arg is Success) + } + return arg is Success + } +} + +fun Result.isSuccess2(arg: Result): Boolean { + contract { + returns(true) implies (arg is Success) + } + return arg is Success +} 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 4be9fee4e38..c15be6aef70 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 @@ -525,6 +525,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/kt56769.kt"); } + @Test + @TestMetadata("kt56876.kt") + public void testKt56876() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt56876.kt"); + } + @Test @TestMetadata("kt56877.kt") public void testKt56877() throws Exception {