diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java index 1387a44a333..9198d789c27 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java @@ -39,6 +39,11 @@ public class FirOldFrontendDiagnosticsTestWithStdlibGenerated extends AbstractFi runTest("compiler/testData/diagnostics/testsWithStdLib/ArrayOfNothing.kt"); } + @TestMetadata("assignedInSynchronized.kt") + public void testAssignedInSynchronized() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt"); + } + @TestMetadata("CallCompanionProtectedNonStatic.kt") public void testCallCompanionProtectedNonStatic() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/CallCompanionProtectedNonStatic.kt"); diff --git a/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.fir.kt new file mode 100644 index 00000000000..85adce7df3a --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.fir.kt @@ -0,0 +1,12 @@ +class A { + fun test() { + val a: A + synchronized(this) { + if (bar()) throw RuntimeException() + a = A() + } + a.bar() + } + + fun bar() = false +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt b/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt new file mode 100644 index 00000000000..18596c5430f --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt @@ -0,0 +1,12 @@ +class A { + fun test() { + val a: A + synchronized(this) { + if (bar()) throw RuntimeException() + a = A() + } + a.bar() + } + + fun bar() = false +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.txt b/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.txt new file mode 100644 index 00000000000..01315e44ce9 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.txt @@ -0,0 +1,10 @@ +package + +public final class A { + public constructor A() + public final fun bar(): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.fir.kt index e63f28fb23c..b1bedb3fced 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.fir.kt @@ -89,4 +89,16 @@ class DefiniteInitializationInInitSection { myRun { x = 42 } unknownRun { y = 239 } } -} \ No newline at end of file +} + +class DefiniteInitializationAfterThrow { + fun test() { + val a: Int + myRun { + if (bar()) throw RuntimeException() + a = 42 + } + a.hashCode() + } + fun bar() = false +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.kt b/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.kt index 74cf4cbc28d..dbad861f8f7 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.kt @@ -89,4 +89,16 @@ class DefiniteInitializationInInitSection { myRun { x = 42 } unknownRun { y = 239 } } -} \ No newline at end of file +} + +class DefiniteInitializationAfterThrow { + fun test() { + val a: Int + myRun { + if (bar()) throw RuntimeException() + a = 42 + } + a.hashCode() + } + fun bar() = false +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.txt b/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.txt index d10107c46d7..6814b01f411 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/contracts/controlflow/initialization/exactlyOnce/valDefiniteInitialization.txt @@ -11,6 +11,15 @@ public fun returningValue(): kotlin.Unit public fun shadowing(): kotlin.Unit public fun unknownRun(/*0*/ block: () -> kotlin.Unit): kotlin.Unit +public final class DefiniteInitializationAfterThrow { + public constructor DefiniteInitializationAfterThrow() + public final fun bar(): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + public final class DefiniteInitializationInInitSection { public constructor DefiniteInitializationInInitSection() public final val x: kotlin.Int diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java index b512c76d8af..002db0b9399 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java @@ -39,6 +39,11 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW runTest("compiler/testData/diagnostics/testsWithStdLib/ArrayOfNothing.kt"); } + @TestMetadata("assignedInSynchronized.kt") + public void testAssignedInSynchronized() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt"); + } + @TestMetadata("CallCompanionProtectedNonStatic.kt") public void testCallCompanionProtectedNonStatic() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/CallCompanionProtectedNonStatic.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java index fff8026db0e..989dc657726 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java @@ -39,6 +39,11 @@ public class DiagnosticsTestWithStdLibUsingJavacGenerated extends AbstractDiagno runTest("compiler/testData/diagnostics/testsWithStdLib/ArrayOfNothing.kt"); } + @TestMetadata("assignedInSynchronized.kt") + public void testAssignedInSynchronized() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt"); + } + @TestMetadata("CallCompanionProtectedNonStatic.kt") public void testCallCompanionProtectedNonStatic() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/CallCompanionProtectedNonStatic.kt");