JS IR: fix origin for callable references with bound reciever

In case of IrFunctionReference with type SuspendFunction (no K!) there
was a misalignment between the base class (Any) and the
origin (LAMBDA..). As a result the SuspendFunctionLowering was
getting confused and produced hanging code.
This commit is contained in:
Anton Bannykh
2020-05-13 19:31:25 +03:00
parent bdca4b45bd
commit 86b5c63891
6 changed files with 22 additions and 6 deletions
@@ -122,7 +122,7 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod
visibility = Visibilities.LOCAL
// A callable reference results in a synthetic class, while a lambda is not synthetic.
// We don't produce GENERATED_SAM_IMPLEMENTATION, which is always synthetic.
origin = if (isKReference) FUNCTION_REFERENCE_IMPL else LAMBDA_IMPL
origin = if (isKReference || !isLambda) FUNCTION_REFERENCE_IMPL else LAMBDA_IMPL
name = SpecialNames.NO_NAME_PROVIDED
}.apply {
superTypes = listOf(superClass, reference.type)