[FIR] Handle lateinit local variable properly

This commit is contained in:
Jinseong Jeon
2020-04-07 09:17:22 +03:00
committed by Mikhail Glukhikh
parent 33d4655053
commit fa9d79392f
8 changed files with 8 additions and 8 deletions
@@ -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
@@ -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)
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
import kotlin.UninitializedPropertyAccessException
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
import kotlin.UninitializedPropertyAccessException
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
import kotlin.UninitializedPropertyAccessException
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
import kotlin.UninitializedPropertyAccessException