Rename: ClassReceiver ---> ImplicitClassReceiver, CastClassReceiver ---> CastImplicitClassReceiver
This commit is contained in:
@@ -2484,8 +2484,8 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public StackValue generateReceiverValue(@NotNull ReceiverValue receiverValue, boolean isSuper) {
|
public StackValue generateReceiverValue(@NotNull ReceiverValue receiverValue, boolean isSuper) {
|
||||||
if (receiverValue instanceof ClassReceiver) {
|
if (receiverValue instanceof ImplicitClassReceiver) {
|
||||||
ClassDescriptor receiverDescriptor = ((ClassReceiver) receiverValue).getDeclarationDescriptor();
|
ClassDescriptor receiverDescriptor = ((ImplicitClassReceiver) receiverValue).getDeclarationDescriptor();
|
||||||
if (DescriptorUtils.isCompanionObject(receiverDescriptor)) {
|
if (DescriptorUtils.isCompanionObject(receiverDescriptor)) {
|
||||||
CallableMemberDescriptor contextDescriptor = context.getContextDescriptor();
|
CallableMemberDescriptor contextDescriptor = context.getContextDescriptor();
|
||||||
if (contextDescriptor instanceof FunctionDescriptor && receiverDescriptor == contextDescriptor.getContainingDeclaration()) {
|
if (contextDescriptor instanceof FunctionDescriptor && receiverDescriptor == contextDescriptor.getContainingDeclaration()) {
|
||||||
@@ -2497,7 +2497,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return StackValue.thisOrOuter(this, receiverDescriptor, isSuper,
|
return StackValue.thisOrOuter(this, receiverDescriptor, isSuper,
|
||||||
receiverValue instanceof CastClassReceiver || isEnumEntry(receiverDescriptor));
|
receiverValue instanceof CastImplicitClassReceiver || isEnumEntry(receiverDescriptor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (receiverValue instanceof ScriptReceiver) {
|
else if (receiverValue instanceof ScriptReceiver) {
|
||||||
@@ -3371,7 +3371,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
if (dispatchReceiver != null) {
|
if (dispatchReceiver != null) {
|
||||||
Type receiverType = typeMapper.mapType(dispatchReceiver.getType());
|
Type receiverType = typeMapper.mapType(dispatchReceiver.getType());
|
||||||
ReceiverValue receiver = resolvedCall.getDispatchReceiver();
|
ReceiverValue receiver = resolvedCall.getDispatchReceiver();
|
||||||
boolean callSuper = containingDeclaration.isInner() && receiver instanceof ClassReceiver;
|
boolean callSuper = containingDeclaration.isInner() && receiver instanceof ImplicitClassReceiver;
|
||||||
generateReceiverValue(receiver, callSuper).put(receiverType, v);
|
generateReceiverValue(receiver, callSuper).put(receiverType, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -126,7 +126,7 @@ public class DataFlowValueFactory {
|
|||||||
) {
|
) {
|
||||||
if (receiverValue instanceof TransientReceiver ||
|
if (receiverValue instanceof TransientReceiver ||
|
||||||
receiverValue instanceof ScriptReceiver ||
|
receiverValue instanceof ScriptReceiver ||
|
||||||
receiverValue instanceof ClassReceiver ||
|
receiverValue instanceof ImplicitClassReceiver ||
|
||||||
receiverValue instanceof ExtensionReceiver) {
|
receiverValue instanceof ExtensionReceiver) {
|
||||||
return createDataFlowValueForStableReceiver(receiverValue);
|
return createDataFlowValueForStableReceiver(receiverValue);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForObject
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.hasLowPriorityInOverloadResolution
|
import org.jetbrains.kotlin.resolve.descriptorUtil.hasLowPriorityInOverloadResolution
|
||||||
import org.jetbrains.kotlin.resolve.scopes.ImportingScope
|
import org.jetbrains.kotlin.resolve.scopes.ImportingScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.CastClassReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.CastImplicitClassReceiver
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.QualifierReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.QualifierReceiver
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue.NO_RECEIVER
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue.NO_RECEIVER
|
||||||
@@ -234,8 +234,8 @@ public class TaskPrioritizer(
|
|||||||
val filteredMembers = if (filter == null) membersForThisVariant else membersForThisVariant.filter(filter)
|
val filteredMembers = if (filter == null) membersForThisVariant else membersForThisVariant.filter(filter)
|
||||||
|
|
||||||
val dispatchReceiver =
|
val dispatchReceiver =
|
||||||
if (explicitReceiver.value is ClassReceiver && type != explicitReceiver.value.type) {
|
if (explicitReceiver.value is ImplicitClassReceiver && type != explicitReceiver.value.type) {
|
||||||
CastClassReceiver(explicitReceiver.value.classDescriptor, type)
|
CastImplicitClassReceiver(explicitReceiver.value.classDescriptor, type)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
explicitReceiver.value
|
explicitReceiver.value
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getParentResolvedCall
|
|||||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
@@ -77,7 +77,7 @@ public abstract class AbstractResolvedCallsTest : KotlinLiteFixture() {
|
|||||||
|
|
||||||
private fun ReceiverValue.getText() = when (this) {
|
private fun ReceiverValue.getText() = when (this) {
|
||||||
is ExpressionReceiver -> "${expression.getText()} {${getType()}}"
|
is ExpressionReceiver -> "${expression.getText()} {${getType()}}"
|
||||||
is ClassReceiver -> "Class{${getType()}}"
|
is ImplicitClassReceiver -> "Class{${getType()}}"
|
||||||
is ExtensionReceiver -> "${getType()}Ext{${declarationDescriptor.getText()}}"
|
is ExtensionReceiver -> "${getType()}Ext{${declarationDescriptor.getText()}}"
|
||||||
else -> toString()
|
else -> toString()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -19,16 +19,16 @@ package org.jetbrains.kotlin.descriptors.impl;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassReceiver;
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver;
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue;
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue;
|
||||||
|
|
||||||
public class LazyClassReceiverParameterDescriptor extends AbstractReceiverParameterDescriptor {
|
public class LazyClassReceiverParameterDescriptor extends AbstractReceiverParameterDescriptor {
|
||||||
private final ClassDescriptor descriptor;
|
private final ClassDescriptor descriptor;
|
||||||
private final ClassReceiver receiverValue;
|
private final ImplicitClassReceiver receiverValue;
|
||||||
|
|
||||||
public LazyClassReceiverParameterDescriptor(@NotNull ClassDescriptor descriptor) {
|
public LazyClassReceiverParameterDescriptor(@NotNull ClassDescriptor descriptor) {
|
||||||
this.descriptor = descriptor;
|
this.descriptor = descriptor;
|
||||||
this.receiverValue = new ClassReceiver(descriptor);
|
this.receiverValue = new ImplicitClassReceiver(descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+2
-2
@@ -20,5 +20,5 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
// ClassReceiver cast to given target type
|
// ClassReceiver cast to given target type
|
||||||
// NB: equals / hashCode are inherited from ClassReceiver (as designed)
|
// NB: equals / hashCode are inherited from ImplicitClassReceiver (as designed)
|
||||||
class CastClassReceiver(originalDescriptor: ClassDescriptor, val targetType: KotlinType) : ClassReceiver(originalDescriptor)
|
class CastImplicitClassReceiver(originalDescriptor: ClassDescriptor, val targetType: KotlinType) : ImplicitClassReceiver(originalDescriptor)
|
||||||
+5
-2
@@ -25,7 +25,10 @@ interface ThisClassReceiver : ReceiverValue {
|
|||||||
val classDescriptor: ClassDescriptor
|
val classDescriptor: ClassDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
open class ClassReceiver(override val classDescriptor: ClassDescriptor) : ThisClassReceiver, ImplicitReceiver {
|
/**
|
||||||
|
* Same but implicit only
|
||||||
|
*/
|
||||||
|
open class ImplicitClassReceiver(override val classDescriptor: ClassDescriptor) : ThisClassReceiver, ImplicitReceiver {
|
||||||
|
|
||||||
override fun exists() = true
|
override fun exists() = true
|
||||||
|
|
||||||
@@ -33,7 +36,7 @@ open class ClassReceiver(override val classDescriptor: ClassDescriptor) : ThisCl
|
|||||||
|
|
||||||
override val declarationDescriptor = classDescriptor
|
override val declarationDescriptor = classDescriptor
|
||||||
|
|
||||||
override fun equals(other: Any?) = classDescriptor == (other as? ClassReceiver)?.classDescriptor
|
override fun equals(other: Any?) = classDescriptor == (other as? ImplicitClassReceiver)?.classDescriptor
|
||||||
|
|
||||||
override fun hashCode() = classDescriptor.hashCode()
|
override fun hashCode() = classDescriptor.hashCode()
|
||||||
|
|
||||||
+3
-3
@@ -52,7 +52,7 @@ import org.jetbrains.kotlin.psi.psiUtil.effectiveDeclarations
|
|||||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
public class KotlinFindClassUsagesHandler(
|
public class KotlinFindClassUsagesHandler(
|
||||||
@@ -163,8 +163,8 @@ public class KotlinFindClassUsagesHandler(
|
|||||||
|
|
||||||
val bindingContext = element.analyze()
|
val bindingContext = element.analyze()
|
||||||
val resolvedCall = bindingContext[BindingContext.CALL, element]?.getResolvedCall(bindingContext) ?: return
|
val resolvedCall = bindingContext[BindingContext.CALL, element]?.getResolvedCall(bindingContext) ?: return
|
||||||
if ((resolvedCall.getDispatchReceiver() as? ClassReceiver)?.declarationDescriptor == companionObjectDescriptor
|
if ((resolvedCall.getDispatchReceiver() as? ImplicitClassReceiver)?.declarationDescriptor == companionObjectDescriptor
|
||||||
|| (resolvedCall.getExtensionReceiver() as? ClassReceiver)?.declarationDescriptor == companionObjectDescriptor) {
|
|| (resolvedCall.getExtensionReceiver() as? ImplicitClassReceiver)?.declarationDescriptor == companionObjectDescriptor) {
|
||||||
element.getReferences().forEach {
|
element.getReferences().forEach {
|
||||||
if (!stop && !processor.process(it)) {
|
if (!stop && !processor.process(it)) {
|
||||||
stop = true
|
stop = true
|
||||||
|
|||||||
Reference in New Issue
Block a user