IR: make IrComposite.isTransparentScope an extension

This commit is contained in:
Alexander Udalov
2023-02-13 13:58:45 +01:00
committed by Space Team
parent 63025030e3
commit d286409b76
5 changed files with 3 additions and 17 deletions
@@ -15,9 +15,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
* @sample org.jetbrains.kotlin.ir.generator.IrTree.block
*/
abstract class IrBlock : IrContainerExpression() {
override val isTransparentScope: Boolean
get() = false
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitBlock(this, data)
}
@@ -15,9 +15,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
* @sample org.jetbrains.kotlin.ir.generator.IrTree.composite
*/
abstract class IrComposite : IrContainerExpression() {
override val isTransparentScope: Boolean
get() = true
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitComposite(this, data)
}
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrContainerExpression : IrExpression(), IrStatementContainer {
abstract val origin: IrStatementOrigin?
abstract val isTransparentScope: Boolean
override val statements: MutableList<IrStatement> = ArrayList(2)
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
@@ -48,3 +48,6 @@ fun IrVararg.addElement(varargElement: IrVarargElement) {
fun IrStringConcatenation.addArgument(argument: IrExpression) {
arguments.add(argument)
}
val IrContainerExpression.isTransparentScope: Boolean
get() = this is IrComposite
@@ -618,7 +618,6 @@ object IrTree : AbstractTreeBuilder() {
parent(statementContainer)
+field("origin", statementOriginType, nullable = true)
+field("isTransparentScope", boolean)
+listField("statements", statement, mutability = List, isChild = true) {
generationCallback = {
addModifiers(KModifier.OVERRIDE)
@@ -631,19 +630,11 @@ object IrTree : AbstractTreeBuilder() {
accept = true
parent(containerExpression)
+field("isTransparentScope", boolean) {
baseGetter = code("false")
}
}
val composite: ElementConfig by element(Expression) {
visitorParent = containerExpression
parent(containerExpression)
+field("isTransparentScope", boolean) {
baseGetter = code("true")
}
}
val returnableBlock: ElementConfig by element(Expression) {
parent(block)