Rename: ClassReceiver ---> ImplicitClassReceiver, CastClassReceiver ---> CastImplicitClassReceiver

This commit is contained in:
Mikhail Glukhikh
2015-11-17 12:29:36 +03:00
parent 04569dd4af
commit 657052e1d2
8 changed files with 24 additions and 21 deletions
@@ -2484,8 +2484,8 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
@NotNull
public StackValue generateReceiverValue(@NotNull ReceiverValue receiverValue, boolean isSuper) {
if (receiverValue instanceof ClassReceiver) {
ClassDescriptor receiverDescriptor = ((ClassReceiver) receiverValue).getDeclarationDescriptor();
if (receiverValue instanceof ImplicitClassReceiver) {
ClassDescriptor receiverDescriptor = ((ImplicitClassReceiver) receiverValue).getDeclarationDescriptor();
if (DescriptorUtils.isCompanionObject(receiverDescriptor)) {
CallableMemberDescriptor contextDescriptor = context.getContextDescriptor();
if (contextDescriptor instanceof FunctionDescriptor && receiverDescriptor == contextDescriptor.getContainingDeclaration()) {
@@ -2497,7 +2497,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
}
else {
return StackValue.thisOrOuter(this, receiverDescriptor, isSuper,
receiverValue instanceof CastClassReceiver || isEnumEntry(receiverDescriptor));
receiverValue instanceof CastImplicitClassReceiver || isEnumEntry(receiverDescriptor));
}
}
else if (receiverValue instanceof ScriptReceiver) {
@@ -3371,7 +3371,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
if (dispatchReceiver != null) {
Type receiverType = typeMapper.mapType(dispatchReceiver.getType());
ReceiverValue receiver = resolvedCall.getDispatchReceiver();
boolean callSuper = containingDeclaration.isInner() && receiver instanceof ClassReceiver;
boolean callSuper = containingDeclaration.isInner() && receiver instanceof ImplicitClassReceiver;
generateReceiverValue(receiver, callSuper).put(receiverType, v);
}
@@ -126,7 +126,7 @@ public class DataFlowValueFactory {
) {
if (receiverValue instanceof TransientReceiver ||
receiverValue instanceof ScriptReceiver ||
receiverValue instanceof ClassReceiver ||
receiverValue instanceof ImplicitClassReceiver ||
receiverValue instanceof ExtensionReceiver) {
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.scopes.ImportingScope
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.resolve.scopes.receivers.CastClassReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.CastImplicitClassReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.QualifierReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
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 dispatchReceiver =
if (explicitReceiver.value is ClassReceiver && type != explicitReceiver.value.type) {
CastClassReceiver(explicitReceiver.value.classDescriptor, type)
if (explicitReceiver.value is ImplicitClassReceiver && type != explicitReceiver.value.type) {
CastImplicitClassReceiver(explicitReceiver.value.classDescriptor, type)
}
else {
explicitReceiver.value
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getParentResolvedCall
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
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.descriptors.CallableDescriptor
import org.jetbrains.kotlin.resolve.BindingContext
@@ -77,7 +77,7 @@ public abstract class AbstractResolvedCallsTest : KotlinLiteFixture() {
private fun ReceiverValue.getText() = when (this) {
is ExpressionReceiver -> "${expression.getText()} {${getType()}}"
is ClassReceiver -> "Class{${getType()}}"
is ImplicitClassReceiver -> "Class{${getType()}}"
is ExtensionReceiver -> "${getType()}Ext{${declarationDescriptor.getText()}}"
else -> toString()
}
@@ -19,16 +19,16 @@ package org.jetbrains.kotlin.descriptors.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
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;
public class LazyClassReceiverParameterDescriptor extends AbstractReceiverParameterDescriptor {
private final ClassDescriptor descriptor;
private final ClassReceiver receiverValue;
private final ImplicitClassReceiver receiverValue;
public LazyClassReceiverParameterDescriptor(@NotNull ClassDescriptor descriptor) {
this.descriptor = descriptor;
this.receiverValue = new ClassReceiver(descriptor);
this.receiverValue = new ImplicitClassReceiver(descriptor);
}
@NotNull
@@ -20,5 +20,5 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.types.KotlinType
// ClassReceiver cast to given target type
// NB: equals / hashCode are inherited from ClassReceiver (as designed)
class CastClassReceiver(originalDescriptor: ClassDescriptor, val targetType: KotlinType) : ClassReceiver(originalDescriptor)
// NB: equals / hashCode are inherited from ImplicitClassReceiver (as designed)
class CastImplicitClassReceiver(originalDescriptor: ClassDescriptor, val targetType: KotlinType) : ImplicitClassReceiver(originalDescriptor)
@@ -25,7 +25,10 @@ interface ThisClassReceiver : ReceiverValue {
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
@@ -33,7 +36,7 @@ open class ClassReceiver(override val classDescriptor: ClassDescriptor) : ThisCl
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()
@@ -52,7 +52,7 @@ import org.jetbrains.kotlin.psi.psiUtil.effectiveDeclarations
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.resolve.BindingContext
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.*
public class KotlinFindClassUsagesHandler(
@@ -163,8 +163,8 @@ public class KotlinFindClassUsagesHandler(
val bindingContext = element.analyze()
val resolvedCall = bindingContext[BindingContext.CALL, element]?.getResolvedCall(bindingContext) ?: return
if ((resolvedCall.getDispatchReceiver() as? ClassReceiver)?.declarationDescriptor == companionObjectDescriptor
|| (resolvedCall.getExtensionReceiver() as? ClassReceiver)?.declarationDescriptor == companionObjectDescriptor) {
if ((resolvedCall.getDispatchReceiver() as? ImplicitClassReceiver)?.declarationDescriptor == companionObjectDescriptor
|| (resolvedCall.getExtensionReceiver() as? ImplicitClassReceiver)?.declarationDescriptor == companionObjectDescriptor) {
element.getReferences().forEach {
if (!stop && !processor.process(it)) {
stop = true