FIR: support lateinit properties

This commit is contained in:
Mikhail Glukhikh
2018-03-26 18:49:54 +03:00
parent 7279d696d2
commit 124c11df08
6 changed files with 9 additions and 2 deletions
@@ -395,6 +395,7 @@ class RawFirBuilder(val session: FirSession) {
property.platformStatus, property.platformStatus,
property.hasModifier(KtTokens.OVERRIDE_KEYWORD), property.hasModifier(KtTokens.OVERRIDE_KEYWORD),
property.hasModifier(KtTokens.CONST_KEYWORD), property.hasModifier(KtTokens.CONST_KEYWORD),
property.hasModifier(KtTokens.LATEINIT_KEYWORD),
property.receiverTypeReference.convertSafe(), property.receiverTypeReference.convertSafe(),
propertyType, propertyType,
property.isVar, property.isVar,
@@ -163,6 +163,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
if (memberDeclaration.isConst) { if (memberDeclaration.isConst) {
print("const ") print("const ")
} }
if (memberDeclaration.isLateInit) {
print("lateinit ")
}
} }
visitNamedDeclaration(memberDeclaration) visitNamedDeclaration(memberDeclaration)
@@ -16,6 +16,8 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMember, FirVariable { interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMember, FirVariable {
val isConst: Boolean val isConst: Boolean
val isLateInit: Boolean
// Should it be nullable or have some default? // Should it be nullable or have some default?
val getter: FirPropertyAccessor val getter: FirPropertyAccessor
@@ -28,6 +28,7 @@ class FirMemberPropertyImpl(
platformStatus: FirMemberPlatformStatus, platformStatus: FirMemberPlatformStatus,
isOverride: Boolean, isOverride: Boolean,
override val isConst: Boolean, override val isConst: Boolean,
override val isLateInit: Boolean,
receiverType: FirType?, receiverType: FirType?,
returnType: FirType, returnType: FirType,
override val isVar: Boolean, override val isVar: Boolean,
@@ -15,5 +15,5 @@ class SomeClass : SomeInterface {
get() = true get() = true
set(value) {} set(value) {}
var fau: Double lateinit var fau: Double
} }
@@ -20,7 +20,7 @@ FILE: simpleClass.kt
public? set(value: Boolean): <implicit> { public? set(value: Boolean): <implicit> {
} }
public? final? property fau(var): Double public? final? lateinit property fau(var): Double
public? get(): Double public? get(): Double
public? set(value: Double): R|kotlin/Unit| public? set(value: Double): R|kotlin/Unit|