diff --git a/compiler/testData/codegen/box/functions/invoke/extensionInvokeOnExpr.kt b/compiler/testData/codegen/box/functions/invoke/extensionInvokeOnExpr.kt index cdff3d73ad1..35496700fd7 100644 --- a/compiler/testData/codegen/box/functions/invoke/extensionInvokeOnExpr.kt +++ b/compiler/testData/codegen/box/functions/invoke/extensionInvokeOnExpr.kt @@ -1,6 +1,3 @@ -// TODO: muted automatically, investigate should it be ran for JS or not -// IGNORE_BACKEND: JS - class A class B { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 791246385e7..0055ba14d96 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -8744,13 +8744,7 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { @TestMetadata("extensionInvokeOnExpr.kt") public void testExtensionInvokeOnExpr() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/functions/invoke/extensionInvokeOnExpr.kt"); - try { - doTest(fileName); - } - catch (Throwable ignore) { - return; - } - throw new AssertionError("Looks like this test can be unmuted. Remove IGNORE_BACKEND directive for that."); + doTest(fileName); } @TestMetadata("invoke.kt") diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/callTranslator/CallTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/callTranslator/CallTranslator.kt index 8fa727bf80e..90cce43d2f1 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/callTranslator/CallTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/callTranslator/CallTranslator.kt @@ -38,7 +38,7 @@ import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isInvokeCallOnVariabl import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionResolvedCall import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind -import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind.NO_EXPLICIT_RECEIVER +import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind.* import org.jetbrains.kotlin.resolve.inline.InlineStrategy import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue @@ -194,12 +194,12 @@ fun computeExplicitReceiversForInvoke( } } - val dispatchReceiverExpression = translateReceiverAsExpression(dispatchReceiver) - return when (Pair(dispatchReceiver != null, extensionReceiver != null)) { - Pair(true, true) -> ExplicitReceivers(dispatchReceiverExpression, explicitReceivers.extensionOrDispatchReceiver) - Pair(true, false) -> ExplicitReceivers(dispatchReceiverExpression) - Pair(false, true) -> ExplicitReceivers(translateReceiverAsExpression(extensionReceiver)) - else -> throw AssertionError("'Invoke' resolved call without receivers: $callElement") + return when (resolvedCall.explicitReceiverKind) { + NO_EXPLICIT_RECEIVER -> ExplicitReceivers(null) + DISPATCH_RECEIVER -> ExplicitReceivers(translateReceiverAsExpression(dispatchReceiver)) + EXTENSION_RECEIVER -> ExplicitReceivers(translateReceiverAsExpression(extensionReceiver)) + BOTH_RECEIVERS -> ExplicitReceivers(translateReceiverAsExpression(dispatchReceiver), + translateReceiverAsExpression(extensionReceiver)) } }