IrDeclaration.transform(transformer, data) returns IrStatement.

Declaration containers assume that transformers maintain declaration structure.
This commit is contained in:
Dmitry Petrov
2016-09-16 14:21:14 +03:00
committed by Dmitry Petrov
parent 65dcdaecfb
commit e0129ef33b
4 changed files with 6 additions and 5 deletions
@@ -25,8 +25,8 @@ interface IrDeclaration : IrStatement {
val declarationKind: IrDeclarationKind val declarationKind: IrDeclarationKind
val origin: IrDeclarationOrigin val origin: IrDeclarationOrigin
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrDeclaration = override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrStatement =
accept(transformer, data) as IrDeclaration accept(transformer, data) as IrStatement
} }
enum class IrDeclarationKind { enum class IrDeclarationKind {
@@ -57,7 +57,7 @@ class IrClassImpl(
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) { override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
declarations.forEachIndexed { i, irDeclaration -> declarations.forEachIndexed { i, irDeclaration ->
declarations[i] = irDeclaration.transform(transformer, data) declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration
} }
} }
} }
@@ -51,7 +51,7 @@ class IrFileImpl(
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) { override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
declarations.forEachIndexed { i, irDeclaration -> declarations.forEachIndexed { i, irDeclaration ->
declarations[i] = irDeclaration.transform(transformer, data) declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration
} }
} }
} }
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.ir.visitors package org.jetbrains.kotlin.ir.visitors
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
@@ -36,7 +37,7 @@ interface IrElementTransformer<in D> : IrElementVisitor<IrElement, D> {
return declaration return declaration
} }
override fun visitDeclaration(declaration: IrDeclaration, data: D): IrDeclaration { override fun visitDeclaration(declaration: IrDeclaration, data: D): IrStatement {
declaration.transformChildren(this, data) declaration.transformChildren(this, data)
return declaration return declaration
} }