diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt index 2ef8e7b7aa5..66de5563e93 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange import org.jetbrains.kotlin.contracts.description.isDefinitelyVisited import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors +import org.jetbrains.kotlin.fir.declarations.isLateInit import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.resolve.dfa.cfg.CFGNode import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph @@ -38,6 +39,7 @@ object FirPropertyInitializationAnalyzer : AbstractFirPropertyInitializationChec val reference = node.fir.calleeReference as? FirResolvedNamedReference ?: return val symbol = reference.resolvedSymbol as? FirPropertySymbol ?: return if (symbol !in localProperties) return + if (symbol.fir.isLateInit) return val kind = data.getValue(node)[symbol] ?: EventOccurrencesRange.ZERO if (!kind.isDefinitelyVisited()) { node.fir.source?.let { diff --git a/compiler/testData/diagnostics/tests/lateinit/local/uninitialized.fir.kt b/compiler/testData/diagnostics/tests/lateinit/local/uninitialized.fir.kt deleted file mode 100644 index dc2735b53da..00000000000 --- a/compiler/testData/diagnostics/tests/lateinit/local/uninitialized.fir.kt +++ /dev/null @@ -1,24 +0,0 @@ -// !LANGUAGE: +LateinitLocalVariables - -fun test1() { - lateinit var s: String - s.length -} - -fun test2() { - lateinit var s: String - run { - s = "" - } - s.length -} - -fun almostAlwaysTrue(): Boolean = true - -fun test3() { - lateinit var s: String - if (almostAlwaysTrue()) { - s = "" - } - s.length -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/lateinit/local/uninitialized.kt b/compiler/testData/diagnostics/tests/lateinit/local/uninitialized.kt index 090a7d0cce9..8c21c4e3258 100644 --- a/compiler/testData/diagnostics/tests/lateinit/local/uninitialized.kt +++ b/compiler/testData/diagnostics/tests/lateinit/local/uninitialized.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +LateinitLocalVariables fun test1() {