[FIR] Handle lateinit local variable properly
This commit is contained in:
committed by
Mikhail Glukhikh
parent
33d4655053
commit
fa9d79392f
+2
-1
@@ -787,10 +787,11 @@ class Fir2IrDeclarationStorage(
|
||||
variable.name.isSpecial -> IrDeclarationOrigin.IR_TEMPORARY_VARIABLE
|
||||
else -> IrDeclarationOrigin.DEFINED
|
||||
}
|
||||
val isLateInit = if (variable is FirProperty) variable.isLateInit else false
|
||||
val irVariable = variable.convertWithOffsets { startOffset, endOffset ->
|
||||
declareIrVariable(
|
||||
startOffset, endOffset, origin,
|
||||
variable.name, type, variable.isVar, isConst = false, isLateinit = false
|
||||
variable.name, type, variable.isVar, isConst = false, isLateinit = isLateInit
|
||||
)
|
||||
}
|
||||
irVariable.parent = irParent
|
||||
|
||||
+3
-1
@@ -880,7 +880,9 @@ class DeclarationsConverter(
|
||||
expression = expressionConverter.getAsFirExpression(it, "Incorrect delegate expression")
|
||||
}
|
||||
}
|
||||
status = FirDeclarationStatusImpl(Visibilities.LOCAL, Modality.FINAL)
|
||||
status = FirDeclarationStatusImpl(Visibilities.LOCAL, Modality.FINAL).apply {
|
||||
isLateInit = modifiers.hasLateinit()
|
||||
}
|
||||
|
||||
val receiver = delegateExpression?.let {
|
||||
expressionConverter.getAsFirExpression<FirExpression>(it, "Incorrect delegate expression")
|
||||
|
||||
@@ -958,7 +958,9 @@ class RawFirBuilder(
|
||||
}
|
||||
}
|
||||
|
||||
status = FirDeclarationStatusImpl(Visibilities.LOCAL, Modality.FINAL)
|
||||
status = FirDeclarationStatusImpl(Visibilities.LOCAL, Modality.FINAL).apply {
|
||||
isLateInit = hasModifier(LATEINIT_KEYWORD)
|
||||
}
|
||||
|
||||
val receiver = delegateExpression?.toFirExpression("Incorrect delegate expression")
|
||||
generateAccessorsByDelegate(delegateBuilder, null, baseSession, isExtension = false, stubMode, receiver)
|
||||
|
||||
Reference in New Issue
Block a user