From 019d7db737357680cd12749ba0bcc41e4f0f23cc Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 13 Feb 2023 12:45:58 +0200 Subject: [PATCH] [FIR] Add regression test for KT-44392 Also related to KT-56615 --- ...gnosisCompilerFirTestdataTestGenerated.java | 16 ++++++++++++++++ ...tTouchedTilContractsPhaseTestGenerated.java | 18 ++++++++++++++++++ .../redundantNullCheckOnAsCast.fir.txt | 9 +++++++++ .../checkers/redundantNullCheckOnAsCast.kt | 11 +++++++++++ .../runners/FirDiagnosticTestGenerated.java | 16 ++++++++++++++++ ...rDiagnosticsWithLightTreeTestGenerated.java | 16 ++++++++++++++++ 6 files changed, 86 insertions(+) create mode 100644 compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.fir.txt create mode 100644 compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java index 92cfc4d55d9..6545e1dd6a6 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java @@ -1338,6 +1338,22 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis } } + @Nested + @TestMetadata("compiler/fir/analysis-tests/testData/resolve/checkers") + @TestDataPath("$PROJECT_ROOT") + public class Checkers { + @Test + public void testAllFilesPresentInCheckers() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolve/checkers"), Pattern.compile("^([^.]+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("redundantNullCheckOnAsCast.kt") + public void testRedundantNullCheckOnAsCast() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt"); + } + } + @Nested @TestMetadata("compiler/fir/analysis-tests/testData/resolve/constVal") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java index f14214551c6..1d8e23bbb57 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java @@ -1155,6 +1155,24 @@ public class LazyBodyIsNotTouchedTilContractsPhaseTestGenerated extends Abstract } } + @TestMetadata("compiler/fir/analysis-tests/testData/resolve/checkers") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Checkers extends AbstractLazyBodyIsNotTouchedTilContractsPhaseTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + public void testAllFilesPresentInCheckers() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolve/checkers"), Pattern.compile("^([^.]+)\\.kt$"), null, true); + } + + @TestMetadata("redundantNullCheckOnAsCast.kt") + public void testRedundantNullCheckOnAsCast() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt"); + } + } + @TestMetadata("compiler/fir/analysis-tests/testData/resolve/constVal") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.fir.txt b/compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.fir.txt new file mode 100644 index 00000000000..0ced5fd74b1 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.fir.txt @@ -0,0 +1,9 @@ +FILE: redundantNullCheckOnAsCast.kt + public final fun test_1(a: R|kotlin/Any?|): R|kotlin/Unit| { + (R|/a| as R|kotlin/String?|)!! + (R|/a| as? R|kotlin/String|)!! + } + public final fun test_2(a: R|kotlin/Any?|): R|kotlin/Unit| { + (R|/a| as R|kotlin/String?|)!! + R|/a|!! + } diff --git a/compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt b/compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt new file mode 100644 index 00000000000..fd5819c446a --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt @@ -0,0 +1,11 @@ +// ISSUE: KT-44392, KT-56615 + +fun test_1(a: Any?) { + (a as String?)!! + (a as? String)!! +} + +fun test_2(a: Any?) { + (a as String?)!! + a!! +} diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java index 50b89336b22..aa2af4d85d6 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java @@ -1338,6 +1338,22 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { } } + @Nested + @TestMetadata("compiler/fir/analysis-tests/testData/resolve/checkers") + @TestDataPath("$PROJECT_ROOT") + public class Checkers { + @Test + public void testAllFilesPresentInCheckers() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolve/checkers"), Pattern.compile("^([^.]+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("redundantNullCheckOnAsCast.kt") + public void testRedundantNullCheckOnAsCast() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt"); + } + } + @Nested @TestMetadata("compiler/fir/analysis-tests/testData/resolve/constVal") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java index 7651d0e2f58..161e14b2c93 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java @@ -1338,6 +1338,22 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos } } + @Nested + @TestMetadata("compiler/fir/analysis-tests/testData/resolve/checkers") + @TestDataPath("$PROJECT_ROOT") + public class Checkers { + @Test + public void testAllFilesPresentInCheckers() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolve/checkers"), Pattern.compile("^([^.]+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("redundantNullCheckOnAsCast.kt") + public void testRedundantNullCheckOnAsCast() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/checkers/redundantNullCheckOnAsCast.kt"); + } + } + @Nested @TestMetadata("compiler/fir/analysis-tests/testData/resolve/constVal") @TestDataPath("$PROJECT_ROOT")