[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
|
variable.name.isSpecial -> IrDeclarationOrigin.IR_TEMPORARY_VARIABLE
|
||||||
else -> IrDeclarationOrigin.DEFINED
|
else -> IrDeclarationOrigin.DEFINED
|
||||||
}
|
}
|
||||||
|
val isLateInit = if (variable is FirProperty) variable.isLateInit else false
|
||||||
val irVariable = variable.convertWithOffsets { startOffset, endOffset ->
|
val irVariable = variable.convertWithOffsets { startOffset, endOffset ->
|
||||||
declareIrVariable(
|
declareIrVariable(
|
||||||
startOffset, endOffset, origin,
|
startOffset, endOffset, origin,
|
||||||
variable.name, type, variable.isVar, isConst = false, isLateinit = false
|
variable.name, type, variable.isVar, isConst = false, isLateinit = isLateInit
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
irVariable.parent = irParent
|
irVariable.parent = irParent
|
||||||
|
|||||||
+3
-1
@@ -880,7 +880,9 @@ class DeclarationsConverter(
|
|||||||
expression = expressionConverter.getAsFirExpression(it, "Incorrect delegate expression")
|
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 {
|
val receiver = delegateExpression?.let {
|
||||||
expressionConverter.getAsFirExpression<FirExpression>(it, "Incorrect delegate expression")
|
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")
|
val receiver = delegateExpression?.toFirExpression("Incorrect delegate expression")
|
||||||
generateAccessorsByDelegate(delegateBuilder, null, baseSession, isExtension = false, stubMode, receiver)
|
generateAccessorsByDelegate(delegateBuilder, null, baseSession, isExtension = false, stubMode, receiver)
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
// KJS_WITH_FULL_RUNTIME
|
// KJS_WITH_FULL_RUNTIME
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
Vendored
-1
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
import kotlin.UninitializedPropertyAccessException
|
import kotlin.UninitializedPropertyAccessException
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
import kotlin.UninitializedPropertyAccessException
|
import kotlin.UninitializedPropertyAccessException
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
import kotlin.UninitializedPropertyAccessException
|
import kotlin.UninitializedPropertyAccessException
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
import kotlin.UninitializedPropertyAccessException
|
import kotlin.UninitializedPropertyAccessException
|
||||||
|
|||||||
Reference in New Issue
Block a user