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 7c72cdcab06..7e575f33b40 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 @@ -4102,6 +4102,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/enumValuesDeserialized.kt"); } + @Test + @TestMetadata("errorsInUnreachable.kt") + public void testErrorsInUnreachable() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.kt"); + } + @Test @TestMetadata("exception.kt") public void testException() throws Exception { diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.fir.txt new file mode 100644 index 00000000000..94589a6816d --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.fir.txt @@ -0,0 +1,16 @@ +FILE: errorsInUnreachable.kt + public final fun case(): R|kotlin/String| { + lval x0: R|kotlin/Boolean| = Boolean(false) + lval x1: R|kotlin/String| + lval x: R|kotlin/Boolean| + try { + R|/x0| = throw R|java/lang/Exception.Exception|() || Boolean(true) + R|/x|.R|kotlin/Boolean.not|() + lval a: R|kotlin/Int| = R|/x1|.R|kotlin/text/toInt|() + } + catch (e: R|kotlin/Exception|) { + ^case String(OK) + } + + ^case String(NOK) + } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.kt new file mode 100644 index 00000000000..7d7ca592497 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.kt @@ -0,0 +1,13 @@ +fun case(): String { + val x0 = false + val x1: String + val x: Boolean + try { + x0 = (throw Exception()) || true //VAL_REASSIGNMENT should be + !x //ok, unreachable code UNINITIALIZED_VARIABLE should be + val a: Int = x1.toInt() //ok, unreachable code UNINITIALIZED_VARIABLE should be + } catch (e: Exception) { + return "OK" + } + return "NOK" +} 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 12d42e888ab..57517a67b3e 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 @@ -4102,6 +4102,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/enumValuesDeserialized.kt"); } + @Test + @TestMetadata("errorsInUnreachable.kt") + public void testErrorsInUnreachable() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.kt"); + } + @Test @TestMetadata("exception.kt") public void testException() throws Exception { 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 cd56c378ab9..9be6320aea7 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 @@ -4102,6 +4102,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/enumValuesDeserialized.kt"); } + @Test + @TestMetadata("errorsInUnreachable.kt") + public void testErrorsInUnreachable() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/errorsInUnreachable.kt"); + } + @Test @TestMetadata("exception.kt") public void testException() throws Exception {