Make statement containers mutable.

This commit is contained in:
Dmitry Petrov
2016-09-16 13:57:16 +03:00
committed by Dmitry Petrov
parent 4c88ad408f
commit 2b5cb0f722
20 changed files with 50 additions and 78 deletions
@@ -30,11 +30,7 @@ interface IrExpressionBody : IrBody {
}
interface IrStatementContainer {
val statements: List<IrStatement>
fun addStatement(statement: IrStatement)
fun addAll(statements: Collection<IrStatement>)
fun putStatement(index: Int, statement: IrStatement)
val statements: MutableList<IrStatement>
}
interface IrBlockBody : IrBody, IrStatementContainer
@@ -25,18 +25,6 @@ import java.util.*
class IrBlockBodyImpl(startOffset: Int, endOffset: Int) : IrElementBase(startOffset, endOffset), IrBlockBody {
override val statements: MutableList<IrStatement> = ArrayList()
override fun addStatement(statement: IrStatement) {
statements.add(statement)
}
override fun addAll(statements: Collection<IrStatement>) {
this.statements.addAll(statements)
}
override fun putStatement(index: Int, statement: IrStatement) {
statements[index] = statement
}
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitBlockBody(this, data)
}
@@ -27,7 +27,7 @@ class IrBlockImpl(startOffset: Int, endOffset: Int, type: KotlinType, origin: Ir
IrContainerExpressionBase(startOffset, endOffset, type, origin), IrBlock {
constructor(startOffset: Int, endOffset: Int, type: KotlinType, origin: IrStatementOrigin?, statements: List<IrStatement>) :
this(startOffset, endOffset, type, origin) {
addAll(statements)
this.statements.addAll(statements)
}
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -45,14 +45,14 @@ class IrBlockImpl(startOffset: Int, endOffset: Int, type: KotlinType, origin: Ir
}
fun IrBlockImpl.addIfNotNull(statement: IrStatement?) {
if (statement != null) addStatement(statement)
if (statement != null) statements.add(statement)
}
fun IrBlockImpl.inlineStatement(statement: IrStatement) {
if (statement is IrBlock) {
addAll(statement.statements)
statements.addAll(statement.statements)
}
else {
addStatement(statement)
statements.add(statement)
}
}
@@ -27,7 +27,7 @@ class IrCompositeImpl(startOffset: Int, endOffset: Int, type: KotlinType, origin
IrContainerExpressionBase(startOffset, endOffset, type, origin), IrComposite {
constructor(startOffset: Int, endOffset: Int, type: KotlinType, origin: IrStatementOrigin?, statements: List<IrStatement>) :
this(startOffset, endOffset, type, origin) {
addAll(statements)
this.statements.addAll(statements)
}
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -28,18 +28,6 @@ abstract class IrContainerExpressionBase(startOffset: Int, endOffset: Int, type:
IrExpressionBase(startOffset, endOffset, type), IrContainerExpression {
override val statements: MutableList<IrStatement> = ArrayList(2)
override fun addStatement(statement: IrStatement) {
statements.add(statement)
}
override fun addAll(statements: Collection<IrStatement>) {
this.statements.addAll(statements)
}
override fun putStatement(index: Int, statement: IrStatement) {
statements[index] = statement
}
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
statements.forEach { it.accept(visitor, data) }
}