Minor: assertion in IrSingleExpressionValue to ensure that corresponding expression is detached and instantiated once.
This commit is contained in:
committed by
Dmitry Petrov
parent
8de21aadfa
commit
68cdcfa853
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.psi2ir.generators.values
|
package org.jetbrains.kotlin.psi2ir.generators.values
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.ir.assertDetached
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
import org.jetbrains.kotlin.psi2ir.createDefaultGetExpression
|
import org.jetbrains.kotlin.psi2ir.createDefaultGetExpression
|
||||||
@@ -31,7 +32,19 @@ class IrTemporaryVariableValue(val irVariable: IrVariable) : IrValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class IrSingleExpressionValue(val irExpression: IrExpression) : IrValue {
|
class IrSingleExpressionValue(val irExpression: IrExpression) : IrValue {
|
||||||
override fun load() = irExpression
|
init {
|
||||||
|
irExpression.assertDetached()
|
||||||
|
}
|
||||||
|
|
||||||
|
private var instantiated = false
|
||||||
|
|
||||||
|
override fun load() =
|
||||||
|
if (!instantiated) {
|
||||||
|
instantiated = true
|
||||||
|
irExpression
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw AssertionError("Single exprssion value is already instantiated")
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IrLValue : IrValue {
|
interface IrLValue : IrValue {
|
||||||
|
|||||||
Reference in New Issue
Block a user