From e0129ef33b34051bc7390e31fc062321ce93b1dd Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Fri, 16 Sep 2016 14:21:14 +0300 Subject: [PATCH] IrDeclaration.transform(transformer, data) returns IrStatement. Declaration containers assume that transformers maintain declaration structure. --- .../src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt | 4 ++-- .../org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt | 2 +- .../org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt | 2 +- .../org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt index 25612100949..f08f4613ad5 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt @@ -25,8 +25,8 @@ interface IrDeclaration : IrStatement { val declarationKind: IrDeclarationKind val origin: IrDeclarationOrigin - override fun transform(transformer: IrElementTransformer, data: D): IrDeclaration = - accept(transformer, data) as IrDeclaration + override fun transform(transformer: IrElementTransformer, data: D): IrStatement = + accept(transformer, data) as IrStatement } enum class IrDeclarationKind { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt index 0f07ae498f3..17a983c5f2e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt @@ -57,7 +57,7 @@ class IrClassImpl( override fun transformChildren(transformer: IrElementTransformer, data: D) { declarations.forEachIndexed { i, irDeclaration -> - declarations[i] = irDeclaration.transform(transformer, data) + declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration } } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt index f264247ecb4..5daf63c027a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt @@ -51,7 +51,7 @@ class IrFileImpl( override fun transformChildren(transformer: IrElementTransformer, data: D) { declarations.forEachIndexed { i, irDeclaration -> - declarations[i] = irDeclaration.transform(transformer, data) + declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration } } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt index 9995c25be32..3a0ea63970b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.ir.visitors import org.jetbrains.kotlin.ir.IrElement +import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* @@ -36,7 +37,7 @@ interface IrElementTransformer : IrElementVisitor { return declaration } - override fun visitDeclaration(declaration: IrDeclaration, data: D): IrDeclaration { + override fun visitDeclaration(declaration: IrDeclaration, data: D): IrStatement { declaration.transformChildren(this, data) return declaration }