Generate synthetic functions for local functions with default values, by

re-ordering the lowering phases.

The changes in InterfaceLowering are necessary so that IrElements that
target the removed functions are re-targeted to the new functions in
DefaultImpls. This affects local functions in interface functions since
now LocalDeclarationsLowering comes before InterfaceLowering.
This commit is contained in:
Mark Punzalan
2019-06-26 21:01:06 -07:00
committed by max-kammerer
parent d2f1852c5e
commit 1abdf0561a
26 changed files with 239 additions and 89 deletions
@@ -190,7 +190,7 @@ class InlineClassLowering(val context: BackendContext) {
return expression
}
return irCall(expression, getOrCreateStaticMethod(function), dispatchReceiverAsFirstArgument = false)
return irCall(expression, getOrCreateStaticMethod(function), dispatchReceiverAsArgument = false)
}
override fun visitCall(expression: IrCall): IrExpression {
@@ -208,7 +208,7 @@ class InlineClassLowering(val context: BackendContext) {
return irCall(
expression,
getOrCreateStaticMethod(function),
dispatchReceiverAsFirstArgument = (function is IrSimpleFunction)
dispatchReceiverAsArgument = (function is IrSimpleFunction)
)
}