[FIR] Check top-level property initialization via CFG

Now that files have a CFG, use it to validate properties are initialized
correctly. Update FirTopLevelPropertiesChecker to collect initialization
info for the property being checked - similar to
FirMemberPropertiesChecker - and validate proper initialization.

#KT-56683 Fixed
#KT-58531 Fixed
This commit is contained in:
Brian Norman
2023-07-24 15:34:31 -05:00
committed by Space Team
parent b55fda0c55
commit 997e062de9
14 changed files with 202 additions and 54 deletions
@@ -3,4 +3,7 @@ fun foo(): String
class A {
abstract fun foo()
}
class B: A
class B: A
// IGNORE_FIR
// Does not pass because of KT-61296
@@ -3242,6 +3242,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/backingField/SetterWithExplicitType.kt");
}
@Test
@TestMetadata("TopLevelPropertyInitialization.kt")
public void testTopLevelPropertyInitialization() throws Exception {
runTest("compiler/testData/diagnostics/tests/backingField/TopLevelPropertyInitialization.kt");
}
@Test
@TestMetadata("ValDeferredInitInFinalClass.kt")
public void testValDeferredInitInFinalClass() throws Exception {
@@ -3242,6 +3242,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/backingField/SetterWithExplicitType.kt");
}
@Test
@TestMetadata("TopLevelPropertyInitialization.kt")
public void testTopLevelPropertyInitialization() throws Exception {
runTest("compiler/testData/diagnostics/tests/backingField/TopLevelPropertyInitialization.kt");
}
@Test
@TestMetadata("ValDeferredInitInFinalClass.kt")
public void testValDeferredInitInFinalClass() throws Exception {