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 * @sample org.jetbrains.kotlin.ir.generator.IrTree.block
*/ */
abstract class IrBlock : IrContainerExpression() { abstract class IrBlock : IrContainerExpression() {
override val isTransparentScope: Boolean
get() = false
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitBlock(this, data) visitor.visitBlock(this, data)
} }
@@ -15,9 +15,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
* @sample org.jetbrains.kotlin.ir.generator.IrTree.composite * @sample org.jetbrains.kotlin.ir.generator.IrTree.composite
*/ */
abstract class IrComposite : IrContainerExpression() { abstract class IrComposite : IrContainerExpression() {
override val isTransparentScope: Boolean
get() = true
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitComposite(this, data) visitor.visitComposite(this, data)
} }
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrContainerExpression : IrExpression(), IrStatementContainer { abstract class IrContainerExpression : IrExpression(), IrStatementContainer {
abstract val origin: IrStatementOrigin? abstract val origin: IrStatementOrigin?
abstract val isTransparentScope: Boolean
override val statements: MutableList<IrStatement> = ArrayList(2) override val statements: MutableList<IrStatement> = ArrayList(2)
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) { override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
@@ -48,3 +48,6 @@ fun IrVararg.addElement(varargElement: IrVarargElement) {
fun IrStringConcatenation.addArgument(argument: IrExpression) { fun IrStringConcatenation.addArgument(argument: IrExpression) {
arguments.add(argument) arguments.add(argument)
} }
val IrContainerExpression.isTransparentScope: Boolean
get() = this is IrComposite
@@ -618,7 +618,6 @@ object IrTree : AbstractTreeBuilder() {
parent(statementContainer) parent(statementContainer)
+field("origin", statementOriginType, nullable = true) +field("origin", statementOriginType, nullable = true)
+field("isTransparentScope", boolean)
+listField("statements", statement, mutability = List, isChild = true) { +listField("statements", statement, mutability = List, isChild = true) {
generationCallback = { generationCallback = {
addModifiers(KModifier.OVERRIDE) addModifiers(KModifier.OVERRIDE)
@@ -631,19 +630,11 @@ object IrTree : AbstractTreeBuilder() {
accept = true accept = true
parent(containerExpression) parent(containerExpression)
+field("isTransparentScope", boolean) {
baseGetter = code("false")
}
} }
val composite: ElementConfig by element(Expression) { val composite: ElementConfig by element(Expression) {
visitorParent = containerExpression visitorParent = containerExpression
parent(containerExpression) parent(containerExpression)
+field("isTransparentScope", boolean) {
baseGetter = code("true")
}
} }
val returnableBlock: ElementConfig by element(Expression) { val returnableBlock: ElementConfig by element(Expression) {
parent(block) parent(block)