Refactoring. Change type of ResolvedCall#extensionReceiver from Receiver to ReceiverValue

This commit is contained in:
Stanislav Erokhin
2016-03-29 21:27:31 +03:00
parent 63a2d8a416
commit bf08341ee4
19 changed files with 40 additions and 53 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionResolvedCall
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
override val suppressionKey: String get() = "unused"
@@ -69,7 +68,7 @@ class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
private fun isUsageOfReceiver(resolvedCall: ResolvedCall<*>, bindingContext: BindingContext): Boolean {
// As receiver of call
if (resolvedCall.dispatchReceiver.getThisReceiverOwner(bindingContext) == callable ||
(resolvedCall.extensionReceiver as ReceiverValue?).getThisReceiverOwner(bindingContext) == callable) {
resolvedCall.extensionReceiver.getThisReceiverOwner(bindingContext) == callable) {
return true
}
// As explicit "this"
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
class AddTypeToLHSOfCallableReferenceFix(
expression: KtCallableReferenceExpression
@@ -39,7 +38,7 @@ class AddTypeToLHSOfCallableReferenceFix(
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
val resolvedCall = element.callableReference.getResolvedCall(element.analyze(BodyResolveMode.PARTIAL)) ?: return
val receiver = with(resolvedCall) {
dispatchReceiver ?: extensionReceiver as? ReceiverValue ?: return
dispatchReceiver ?: extensionReceiver ?: return
}
val type = KtPsiFactory(project).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(receiver.type))
element.setTypeReference(type)
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -191,11 +191,8 @@ class KotlinFunctionCallUsage(
}
else {
addReceiver = descriptor !is ReceiverParameterDescriptor
val extensionReceiver = resolvedCall.extensionReceiver
argumentExpression =
(if (extensionReceiver is ReceiverValue)
getReceiverExpressionIfMatched(extensionReceiver, descriptor, psiFactory)
else null)
getReceiverExpressionIfMatched(resolvedCall.extensionReceiver, descriptor, psiFactory)
?: getReceiverExpressionIfMatched(resolvedCall.dispatchReceiver, descriptor, psiFactory)
}
if (argumentExpression == null) continue