From 6661a66fc3a6c307c2d9f5a5687015cc4b96419b Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Wed, 17 Jan 2024 13:26:31 +0100 Subject: [PATCH] [Tests] Add tests on smartcasts on static Java fields Current behavior for different modules is undesired, will be fixed in the next commit ^KT-58279 --- ...CompilerTestFE10TestdataTestGenerated.java | 12 ++++++++ ...sticCompilerFE10TestDataTestGenerated.java | 12 ++++++++ ...eeOldFrontendDiagnosticsTestGenerated.java | 12 ++++++++ ...siOldFrontendDiagnosticsTestGenerated.java | 12 ++++++++ .../staticJavaFieldFromOtherModule.kt | 30 +++++++++++++++++++ .../staticJavaFieldFromSameModule.fir.kt | 28 +++++++++++++++++ .../staticJavaFieldFromSameModule.kt | 28 +++++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 12 ++++++++ 8 files changed, 146 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt create mode 100644 compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.fir.kt create mode 100644 compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.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 12d3bba0983..1126f2cca22 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 @@ -36933,6 +36933,18 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/smartCasts/variables/reassignedInRhs.kt"); } + @Test + @TestMetadata("staticJavaFieldFromOtherModule.kt") + public void testStaticJavaFieldFromOtherModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt"); + } + + @Test + @TestMetadata("staticJavaFieldFromSameModule.kt") + public void testStaticJavaFieldFromSameModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt"); + } + @Test @TestMetadata("varAsUse.kt") public void testVarAsUse() 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 d79af265be3..962e2b5ecf5 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 @@ -36933,6 +36933,18 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/smartCasts/variables/reassignedInRhs.kt"); } + @Test + @TestMetadata("staticJavaFieldFromOtherModule.kt") + public void testStaticJavaFieldFromOtherModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt"); + } + + @Test + @TestMetadata("staticJavaFieldFromSameModule.kt") + public void testStaticJavaFieldFromSameModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt"); + } + @Test @TestMetadata("varAsUse.kt") public void testVarAsUse() 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 ec9ec6e5c78..f8d6ec1ab0a 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 @@ -34577,6 +34577,18 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/smartCasts/variables/reassignedInRhs.kt"); } + @Test + @TestMetadata("staticJavaFieldFromOtherModule.kt") + public void testStaticJavaFieldFromOtherModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt"); + } + + @Test + @TestMetadata("staticJavaFieldFromSameModule.kt") + public void testStaticJavaFieldFromSameModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt"); + } + @Test @TestMetadata("varAsUse.kt") public void testVarAsUse() 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 7068c2f9639..1dd3290777b 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 @@ -34703,6 +34703,18 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/smartCasts/variables/reassignedInRhs.kt"); } + @Test + @TestMetadata("staticJavaFieldFromOtherModule.kt") + public void testStaticJavaFieldFromOtherModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt"); + } + + @Test + @TestMetadata("staticJavaFieldFromSameModule.kt") + public void testStaticJavaFieldFromSameModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt"); + } + @Test @TestMetadata("varAsUse.kt") public void testVarAsUse() throws Exception { diff --git a/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt b/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt new file mode 100644 index 00000000000..4764ba7c8a9 --- /dev/null +++ b/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt @@ -0,0 +1,30 @@ +// FIR_IDENTICAL +// SKIP_TXT + +// MODULE: lib +// FILE: J.java +public class J { + public static final Object staticFinalJava = ""; + public static Object staticNonFinalJava = ""; +} + +// MODULE: app(lib) +fun isCast() { + if (J.staticFinalJava is String) { + J.staticFinalJava.length + (J.staticFinalJava as String).length + } + + if (J.staticNonFinalJava is String) { + J.staticNonFinalJava.length + (J.staticFinalJava as String).length + } +} + +fun asCast() { + J.staticFinalJava as String + J.staticFinalJava.length + + J.staticNonFinalJava as String + J.staticNonFinalJava.length +} diff --git a/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.fir.kt b/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.fir.kt new file mode 100644 index 00000000000..bbbf2fcb54a --- /dev/null +++ b/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.fir.kt @@ -0,0 +1,28 @@ +// SKIP_TXT + +// FILE: J.java +public class J { + public static final Object staticFinalJava = ""; + public static Object staticNonFinalJava = ""; +} + +// FILE: Test.kt +fun isCast() { + if (J.staticFinalJava is String) { + J.staticFinalJava.length + (J.staticFinalJava as String).length + } + + if (J.staticNonFinalJava is String) { + J.staticNonFinalJava.length + (J.staticFinalJava as String).length + } +} + +fun asCast() { + J.staticFinalJava as String + J.staticFinalJava.length + + J.staticNonFinalJava as String + J.staticNonFinalJava.length +} diff --git a/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt b/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt new file mode 100644 index 00000000000..d4bdb109c23 --- /dev/null +++ b/compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt @@ -0,0 +1,28 @@ +// SKIP_TXT + +// FILE: J.java +public class J { + public static final Object staticFinalJava = ""; + public static Object staticNonFinalJava = ""; +} + +// FILE: Test.kt +fun isCast() { + if (J.staticFinalJava is String) { + J.staticFinalJava.length + (J.staticFinalJava as String).length + } + + if (J.staticNonFinalJava is String) { + J.staticNonFinalJava.length + (J.staticFinalJava as String).length + } +} + +fun asCast() { + J.staticFinalJava as String + J.staticFinalJava.length + + J.staticNonFinalJava as String + J.staticNonFinalJava.length +} 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 4d737a38edb..7ec8a69b7b1 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 @@ -36933,6 +36933,18 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/smartCasts/variables/reassignedInRhs.kt"); } + @Test + @TestMetadata("staticJavaFieldFromOtherModule.kt") + public void testStaticJavaFieldFromOtherModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromOtherModule.kt"); + } + + @Test + @TestMetadata("staticJavaFieldFromSameModule.kt") + public void testStaticJavaFieldFromSameModule() throws Exception { + runTest("compiler/testData/diagnostics/tests/smartCasts/variables/staticJavaFieldFromSameModule.kt"); + } + @Test @TestMetadata("varAsUse.kt") public void testVarAsUse() throws Exception {