Make statement containers mutable.
This commit is contained in:
committed by
Dmitry Petrov
parent
4c88ad408f
commit
2b5cb0f722
@@ -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 =
|
||||
|
||||
-12
@@ -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) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user