IR: vararg lowering processing delegation constructor call

This commit is contained in:
Vasily Levchenko
2017-03-07 13:42:05 +03:00
committed by vvlevchenko
parent 48b0754a7b
commit 996d6d8f74
@@ -49,7 +49,8 @@ class VarargInjectionLowering internal constructor(val context: Context): Declar
private fun lower(owner:DeclarationDescriptor, element: IrElement?) { private fun lower(owner:DeclarationDescriptor, element: IrElement?) {
element?.transformChildrenVoid(object: IrElementTransformerVoid() { element?.transformChildrenVoid(object: IrElementTransformerVoid() {
val transformer = this val transformer = this
override fun visitCall(expression: IrCall): IrExpression {
private fun replaceEmptyParameterWithEmptyArray(expression: IrMemberAccessExpression) {
log("call of: ${expression.descriptor}") log("call of: ${expression.descriptor}")
context.createIrBuilder(owner, expression.startOffset, expression.endOffset).apply { context.createIrBuilder(owner, expression.startOffset, expression.endOffset).apply {
expression.descriptor.valueParameters.forEach { expression.descriptor.valueParameters.forEach {
@@ -65,6 +66,15 @@ class VarargInjectionLowering internal constructor(val context: Context): Declar
} }
} }
expression.transformChildrenVoid(this) expression.transformChildrenVoid(this)
}
override fun visitCall(expression: IrCall): IrExpression {
replaceEmptyParameterWithEmptyArray(expression)
return expression
}
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall): IrExpression {
replaceEmptyParameterWithEmptyArray(expression)
return expression return expression
} }