Minor: small refactorings in IrElementTransformerVoid

This commit is contained in:
Dmitry Petrov
2017-05-02 15:57:01 +03:00
parent 0203ba4dff
commit 7bd75df1f1
2 changed files with 13 additions and 14 deletions
@@ -39,17 +39,6 @@ fun insertImplicitCasts(builtIns: KotlinBuiltIns, element: IrElement) {
} }
class InsertImplicitCasts(val builtIns: KotlinBuiltIns): IrElementTransformerVoid() { class InsertImplicitCasts(val builtIns: KotlinBuiltIns): IrElementTransformerVoid() {
private inline fun <T : IrElement> T.transformPostfix(body: T.() -> Unit): T {
transformChildrenVoid(this@InsertImplicitCasts)
this.body()
return this
}
override fun visitElement(element: IrElement): IrElement {
element.transformChildrenVoid(this)
return element
}
override fun visitCallableReference(expression: IrCallableReference): IrExpression = override fun visitCallableReference(expression: IrCallableReference): IrExpression =
expression.transformPostfix { expression.transformPostfix {
transformReceiverArguments() transformReceiverArguments()
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> { abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> {
private fun <T : IrElement> T.transformChildren() = apply { transformChildrenVoid(this@IrElementTransformerVoid) } protected fun <T : IrElement> T.transformChildren() = apply { transformChildrenVoid() }
open fun visitElement(element: IrElement): IrElement = element.transformChildren() open fun visitElement(element: IrElement): IrElement = element.transformChildren()
override final fun visitElement(element: IrElement, data: Nothing?): IrElement = visitElement(element) override final fun visitElement(element: IrElement, data: Nothing?): IrElement = visitElement(element)
@@ -154,7 +154,7 @@ abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> {
open fun visitFunctionAccess(expression: IrFunctionAccessExpression) = visitMemberAccess(expression) open fun visitFunctionAccess(expression: IrFunctionAccessExpression) = visitMemberAccess(expression)
override fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: Nothing?) = visitFunctionAccess(expression) override fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: Nothing?) = visitFunctionAccess(expression)
open fun visitCall(expression: IrCall) = visitMemberAccess(expression) open fun visitCall(expression: IrCall) = visitFunctionAccess(expression)
override final fun visitCall(expression: IrCall, data: Nothing?) = visitCall(expression) override final fun visitCall(expression: IrCall, data: Nothing?) = visitCall(expression)
open fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) = visitMemberAccess(expression) open fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) = visitMemberAccess(expression)
@@ -209,7 +209,7 @@ abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> {
open fun visitTry(aTry: IrTry) = visitExpression(aTry) open fun visitTry(aTry: IrTry) = visitExpression(aTry)
override final fun visitTry(aTry: IrTry, data: Nothing?) = visitTry(aTry) override final fun visitTry(aTry: IrTry, data: Nothing?) = visitTry(aTry)
open fun visitCatch(aCatch: IrCatch): IrCatch = aCatch.apply { transformChildrenVoid(this@IrElementTransformerVoid) } open fun visitCatch(aCatch: IrCatch): IrCatch = aCatch.apply { transformChildrenVoid() }
override final fun visitCatch(aCatch: IrCatch, data: Nothing?): IrCatch = visitCatch(aCatch) override final fun visitCatch(aCatch: IrCatch, data: Nothing?): IrCatch = visitCatch(aCatch)
open fun visitBreakContinue(jump: IrBreakContinue) = visitExpression(jump) open fun visitBreakContinue(jump: IrBreakContinue) = visitExpression(jump)
@@ -235,6 +235,16 @@ abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> {
open fun visitErrorCallExpression(expression: IrErrorCallExpression) = visitErrorExpression(expression) open fun visitErrorCallExpression(expression: IrErrorCallExpression) = visitErrorExpression(expression)
override final fun visitErrorCallExpression(expression: IrErrorCallExpression, data: Nothing?) = visitErrorCallExpression(expression) override final fun visitErrorCallExpression(expression: IrErrorCallExpression, data: Nothing?) = visitErrorCallExpression(expression)
protected inline fun <T : IrElement> T.transformPostfix(body: T.() -> Unit): T {
transformChildrenVoid()
this.body()
return this
}
protected fun IrElement.transformChildrenVoid() {
transformChildrenVoid(this@IrElementTransformerVoid)
}
} }
fun IrElement.transformChildrenVoid(transformer: IrElementTransformerVoid) { fun IrElement.transformChildrenVoid(transformer: IrElementTransformerVoid) {