diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 62115448b5e..8073ceb16b5 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -395,6 +395,7 @@ class RawFirBuilder(val session: FirSession) { property.platformStatus, property.hasModifier(KtTokens.OVERRIDE_KEYWORD), property.hasModifier(KtTokens.CONST_KEYWORD), + property.hasModifier(KtTokens.LATEINIT_KEYWORD), property.receiverTypeReference.convertSafe(), propertyType, property.isVar, diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index 2a54bf677ce..678aa2647e9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -163,6 +163,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { if (memberDeclaration.isConst) { print("const ") } + if (memberDeclaration.isLateInit) { + print("lateinit ") + } } visitNamedDeclaration(memberDeclaration) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index 82772c14d80..46d64e9e2ba 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -16,6 +16,8 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMember, FirVariable { val isConst: Boolean + val isLateInit: Boolean + // Should it be nullable or have some default? val getter: FirPropertyAccessor diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberPropertyImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberPropertyImpl.kt index a5c468bb440..de4f9dd7d5a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberPropertyImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberPropertyImpl.kt @@ -28,6 +28,7 @@ class FirMemberPropertyImpl( platformStatus: FirMemberPlatformStatus, isOverride: Boolean, override val isConst: Boolean, + override val isLateInit: Boolean, receiverType: FirType?, returnType: FirType, override val isVar: Boolean, diff --git a/compiler/testData/fir/rawBuilder/declarations/simpleClass.kt b/compiler/testData/fir/rawBuilder/declarations/simpleClass.kt index 851f3c6f289..4d6bf1ff589 100644 --- a/compiler/testData/fir/rawBuilder/declarations/simpleClass.kt +++ b/compiler/testData/fir/rawBuilder/declarations/simpleClass.kt @@ -15,5 +15,5 @@ class SomeClass : SomeInterface { get() = true set(value) {} - var fau: Double + lateinit var fau: Double } \ No newline at end of file diff --git a/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt b/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt index 5fa37fb89d0..8f73084c6dc 100644 --- a/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt +++ b/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt @@ -20,7 +20,7 @@ FILE: simpleClass.kt public? set(value: Boolean): { } - public? final? property fau(var): Double + public? final? lateinit property fau(var): Double public? get(): Double public? set(value: Double): R|kotlin/Unit|