Replaced ReceiverValue.NO_RECEIVER to null.

This commit is contained in:
Stanislav Erokhin
2015-12-14 20:27:04 +03:00
parent 3692318c38
commit c725ed47f5
69 changed files with 245 additions and 314 deletions
@@ -102,7 +102,6 @@ fun TranslationContext.getCallInfo(resolvedCall: ResolvedCall<out FunctionDescri
}
private fun TranslationContext.getDispatchReceiver(receiverValue: ReceiverValue): JsExpression {
assert(receiverValue.exists()) { "receiverValue must be exist here" }
return getDispatchReceiver(getReceiverParameterForReceiver(receiverValue))
}
@@ -110,10 +109,7 @@ private fun TranslationContext.createCallInfo(resolvedCall: ResolvedCall<out Cal
val receiverKind = resolvedCall.getExplicitReceiverKind()
fun getDispatchReceiver(): JsExpression? {
val receiverValue = resolvedCall.getDispatchReceiver()
if (!receiverValue.exists()) {
return null
}
val receiverValue = resolvedCall.getDispatchReceiver() ?: return null
return when (receiverKind) {
DISPATCH_RECEIVER, BOTH_RECEIVERS -> explicitReceivers.extensionOrDispatchReceiver
else -> this.getDispatchReceiver(receiverValue)
@@ -121,10 +117,7 @@ private fun TranslationContext.createCallInfo(resolvedCall: ResolvedCall<out Cal
}
fun getExtensionReceiver(): JsExpression? {
val receiverValue = resolvedCall.getExtensionReceiver()
if (!receiverValue.exists()) {
return null
}
val receiverValue = resolvedCall.getExtensionReceiver() ?: return null
return when (receiverKind) {
EXTENSION_RECEIVER -> explicitReceivers.extensionOrDispatchReceiver
BOTH_RECEIVERS -> explicitReceivers.extensionReceiver
@@ -124,13 +124,13 @@ fun computeExplicitReceiversForInvoke(
val callElement = resolvedCall.getCall().getCallElement()
assert(explicitReceivers.extensionReceiver == null) { "'Invoke' call must have one receiver: $callElement" }
fun translateReceiverAsExpression(receiver: ReceiverValue): JsExpression? =
fun translateReceiverAsExpression(receiver: ReceiverValue?): JsExpression? =
(receiver as? ExpressionReceiver)?.let { Translation.translateAsExpression(it.expression, context) }
val dispatchReceiver = resolvedCall.getDispatchReceiver()
val extensionReceiver = resolvedCall.getExtensionReceiver()
if (dispatchReceiver.exists() && extensionReceiver.exists() && resolvedCall.getExplicitReceiverKind() == ExplicitReceiverKind.BOTH_RECEIVERS) {
if (dispatchReceiver != null && extensionReceiver != null && resolvedCall.getExplicitReceiverKind() == ExplicitReceiverKind.BOTH_RECEIVERS) {
assert(explicitReceivers.extensionOrDispatchReceiver != null) {
"No explicit receiver for 'invoke' resolved call with both receivers: $callElement, text: ${callElement.getText()}" +
"Dispatch receiver: $dispatchReceiver Extension receiver: $extensionReceiver"
@@ -145,7 +145,7 @@ fun computeExplicitReceiversForInvoke(
}
val dispatchReceiverExpression = translateReceiverAsExpression(dispatchReceiver)
return when (Pair(dispatchReceiver.exists(), extensionReceiver.exists())) {
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 as ReceiverValue))
@@ -62,7 +62,7 @@ object EqualsBOIF : BinaryOperationIntrinsicFactory {
val appliedToDynamic =
resolvedCall != null &&
with(resolvedCall.getDispatchReceiver()) {
if (exists()) getType().isDynamic() else false
if (this != null) getType().isDynamic() else false
}
if (appliedToDynamic) {