psi2ir: dynamic member simple assignment/augmented assignment/++/--

This commit is contained in:
Dmitry Petrov
2019-02-07 14:46:24 +03:00
parent fc76d0970b
commit 9a2bd5f4e6
13 changed files with 501 additions and 77 deletions
@@ -24,7 +24,10 @@ var IrDynamicOperatorExpression.left: IrExpression
var IrDynamicOperatorExpression.right: IrExpression
get() = arguments[0]
set(value) {
arguments[0] = value
if (arguments.isEmpty())
arguments.add(value)
else
arguments[0] = value
}
interface IrDynamicMemberExpression : IrDynamicExpression {
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.utils.SmartList
class IrDynamicOperatorExpressionImpl(
startOffset: Int,
@@ -23,7 +24,7 @@ class IrDynamicOperatorExpressionImpl(
override lateinit var receiver: IrExpression
override val arguments: MutableList<IrExpression> = ArrayList()
override val arguments: MutableList<IrExpression> = SmartList()
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitDynamicOperatorExpression(this, data)