[FIR] Make FirBackingField initializer optional
This commit is contained in:
committed by
TeamCityServer
parent
3a3ef161d1
commit
871aebd423
+1
-1
@@ -35,7 +35,7 @@ object FirPropertyFieldTypeChecker : FirPropertyChecker() {
|
||||
reporter.reportOn(declaration.initializer?.source, FirErrors.PROPERTY_INITIALIZER_WITH_EXPLICIT_FIELD_DECLARATION, context)
|
||||
}
|
||||
|
||||
if (backingField.initializer is FirErrorExpression) {
|
||||
if (backingField.initializer == null) {
|
||||
reporter.reportOn(backingField.source, FirErrors.PROPERTY_FIELD_DECLARATION_MISSING_INITIALIZER, context)
|
||||
}
|
||||
|
||||
|
||||
+4
-6
@@ -1351,18 +1351,16 @@ class DeclarationsConverter(
|
||||
): FirBackingField {
|
||||
var modifiers = Modifier()
|
||||
var returnType: FirTypeRef = implicitType
|
||||
var initializerExpression: LighterASTNode? = null
|
||||
var backingFieldInitializer: FirExpression? = null
|
||||
this?.forEachChildren {
|
||||
when {
|
||||
it.tokenType == MODIFIER_LIST -> modifiers = convertModifierList(it)
|
||||
it.tokenType == TYPE_REFERENCE -> returnType = convertType(it)
|
||||
it.isExpression() -> initializerExpression = it
|
||||
it.isExpression() -> {
|
||||
backingFieldInitializer = expressionConverter.getAsFirExpression(it, "Should have initializer")
|
||||
}
|
||||
}
|
||||
}
|
||||
val backingFieldInitializer: FirExpression = expressionConverter.getAsFirExpression(
|
||||
initializerExpression,
|
||||
"Should have initializer"
|
||||
)
|
||||
var componentVisibility = modifiers.getVisibility()
|
||||
if (componentVisibility == Visibilities.Unknown) {
|
||||
componentVisibility = Visibilities.Private
|
||||
|
||||
@@ -477,11 +477,12 @@ open class RawFirBuilder(
|
||||
Visibilities.Private
|
||||
}
|
||||
val status = obtainPropertyComponentStatus(componentVisibility, this, property)
|
||||
val backingFieldInitializer = when (mode) {
|
||||
BodyBuildingMode.LAZY_BODIES -> buildLazyExpression {
|
||||
val backingFieldInitializer = when {
|
||||
this?.hasInitializer() == false -> null
|
||||
mode == BodyBuildingMode.LAZY_BODIES -> buildLazyExpression {
|
||||
source = this@toFirBackingField?.initializer?.toFirSourceElement()
|
||||
}
|
||||
BodyBuildingMode.STUBS -> buildExpressionStub()
|
||||
mode == BodyBuildingMode.STUBS -> buildExpressionStub()
|
||||
else -> this@toFirBackingField?.initializer.toFirExpression("Should have initializer")
|
||||
}
|
||||
val returnType = this?.returnTypeReference.toFirOrImplicitType()
|
||||
|
||||
Reference in New Issue
Block a user