diff --git a/compiler/backend-common/src/bridges/impl.kt b/compiler/backend-common/src/bridges/impl.kt index 73ae9727602..fade885a3dc 100644 --- a/compiler/backend-common/src/bridges/impl.kt +++ b/compiler/backend-common/src/bridges/impl.kt @@ -87,7 +87,7 @@ public fun findTraitImplementation(descriptor: CallableMemberDescriptor): Callab // If this implementation is already generated into one of the superclasses, we need not generate it again, it'll be inherited val containingClass = descriptor.getContainingDeclaration() as ClassDescriptor - val implClassType = implementation!!.getExpectedThisObject()!!.getType() + val implClassType = implementation!!.getDispatchReceiverParameter()!!.getType() for (supertype in containingClass.getDefaultType().getConstructor().getSupertypes()) { if (!DescriptorUtils.isTrait(supertype.getConstructor().getDeclarationDescriptor()!!) && TypeUtils.getAllSupertypes(supertype).contains(implClassType)) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForFunctionDescriptor.java b/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForFunctionDescriptor.java index 41fdd6c8a7d..f69868cb9b3 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForFunctionDescriptor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForFunctionDescriptor.java @@ -44,8 +44,8 @@ public class AccessorForFunctionDescriptor extends SimpleFunctionDescriptorImpl Kind.DECLARATION, SourceElement.NO_SOURCE); this.calleeDescriptor = descriptor; - initialize(DescriptorUtils.getReceiverParameterType(descriptor.getReceiverParameter()), - descriptor instanceof ConstructorDescriptor ? NO_RECEIVER_PARAMETER : descriptor.getExpectedThisObject(), + initialize(DescriptorUtils.getReceiverParameterType(descriptor.getExtensionReceiverParameter()), + descriptor instanceof ConstructorDescriptor ? NO_RECEIVER_PARAMETER : descriptor.getDispatchReceiverParameter(), copyTypeParameters(descriptor), copyValueParameters(descriptor), descriptor.getReturnType(), diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForPropertyDescriptor.java b/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForPropertyDescriptor.java index 09bcec2260f..6e274c36d19 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForPropertyDescriptor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AccessorForPropertyDescriptor.java @@ -34,14 +34,14 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl implem private final PropertyDescriptor calleeDescriptor; public AccessorForPropertyDescriptor(@NotNull PropertyDescriptor pd, @NotNull DeclarationDescriptor containingDeclaration, int index) { - this(pd, pd.getType(), DescriptorUtils.getReceiverParameterType(pd.getReceiverParameter()), pd.getExpectedThisObject(), containingDeclaration, index); + this(pd, pd.getType(), DescriptorUtils.getReceiverParameterType(pd.getExtensionReceiverParameter()), pd.getDispatchReceiverParameter(), containingDeclaration, index); } protected AccessorForPropertyDescriptor( @NotNull PropertyDescriptor original, @NotNull JetType propertyType, @Nullable JetType receiverType, - @Nullable ReceiverParameterDescriptor expectedThisObject, + @Nullable ReceiverParameterDescriptor dispatchReceiverParameter, @NotNull DeclarationDescriptor containingDeclaration, int index ) { @@ -50,7 +50,7 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl implem Kind.DECLARATION, SourceElement.NO_SOURCE); this.calleeDescriptor = original; - setType(propertyType, Collections.emptyList(), expectedThisObject, receiverType); + setType(propertyType, Collections.emptyList(), dispatchReceiverParameter, receiverType); initialize(new Getter(this), new Setter(this)); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java index 62ddfaa88f1..78edd474512 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java @@ -667,7 +667,7 @@ public class AsmUtil { } public static int getVisibilityForSpecialPropertyBackingField(@NotNull PropertyDescriptor propertyDescriptor, boolean isDelegate) { - boolean isExtensionProperty = propertyDescriptor.getReceiverParameter() != null; + boolean isExtensionProperty = propertyDescriptor.getExtensionReceiverParameter() != null; if (isDelegate || isExtensionProperty) { return ACC_PRIVATE; } @@ -688,7 +688,7 @@ public class AsmUtil { } public static boolean isPropertyWithBackingFieldCopyInOuterClass(@NotNull PropertyDescriptor propertyDescriptor) { - boolean isExtensionProperty = propertyDescriptor.getReceiverParameter() != null; + boolean isExtensionProperty = propertyDescriptor.getExtensionReceiverParameter() != null; DeclarationDescriptor propertyContainer = propertyDescriptor.getContainingDeclaration(); return !propertyDescriptor.isVar() && !isExtensionProperty diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java index a45cf18ccaf..4415e37c552 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java @@ -230,7 +230,7 @@ public class ClosureCodegen extends ParentCodegenAware { InstructionAdapter iv = new InstructionAdapter(mv); iv.load(0, asmType); - ReceiverParameterDescriptor receiver = funDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiver = funDescriptor.getExtensionReceiverParameter(); int count = 1; if (receiver != null) { StackValue.local(count, bridge.getArgumentTypes()[count - 1]).put(typeMapper.mapType(receiver.getType()), iv); @@ -328,7 +328,7 @@ public class ClosureCodegen extends ParentCodegenAware { @NotNull public static FunctionDescriptor getErasedInvokeFunction(@NotNull FunctionDescriptor funDescriptor) { int arity = funDescriptor.getValueParameters().size(); - ClassDescriptor funClass = funDescriptor.getReceiverParameter() == null + ClassDescriptor funClass = funDescriptor.getExtensionReceiverParameter() == null ? KotlinBuiltIns.getInstance().getFunction(arity) : KotlinBuiltIns.getInstance().getExtensionFunction(arity); return funClass.getDefaultType().getMemberScope().getFunctions(Name.identifier("invoke")).iterator().next(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index add5162c15a..0e0381ba4a8 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1880,7 +1880,7 @@ public class ExpressionCodegen extends JetVisitor implem boolean isBackingFieldInAnotherClass = AsmUtil.isPropertyWithBackingFieldInOuterClass(propertyDescriptor); boolean isStatic = DescriptorUtils.isStaticDeclaration(propertyDescriptor); boolean isSuper = superExpression != null; - boolean isExtensionProperty = propertyDescriptor.getReceiverParameter() != null; + boolean isExtensionProperty = propertyDescriptor.getExtensionReceiverParameter() != null; JetType delegateType = getPropertyDelegateType(propertyDescriptor, bindingContext); boolean isDelegatedProperty = delegateType != null; @@ -2479,7 +2479,7 @@ public class ExpressionCodegen extends JetVisitor implem PackageFragmentDescriptor containingPackage = (PackageFragmentDescriptor) descriptor.getContainingDeclaration(); String packageClassInternalName = PackageClassUtils.getPackageClassInternalName(containingPackage.getFqName()); - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = descriptor.getExtensionReceiverParameter(); Method factoryMethod; if (receiverParameter != null) { Type[] parameterTypes = new Type[] {JAVA_STRING_TYPE, K_PACKAGE_IMPL_TYPE, getType(Class.class)}; @@ -2556,21 +2556,21 @@ public class ExpressionCodegen extends JetVisitor implem JetCallExpression fakeExpression = constructFakeFunctionCall(); final List fakeArguments = fakeExpression.getValueArguments(); - final ReceiverValue thisObject = computeAndSaveReceiver(signature, codegen, referencedFunction.getExpectedThisObject()); - final ReceiverValue extensionReceiver = computeAndSaveReceiver(signature, codegen, referencedFunction.getReceiverParameter()); + final ReceiverValue dispatchReceiver = computeAndSaveReceiver(signature, codegen, referencedFunction.getDispatchReceiverParameter()); + final ReceiverValue extensionReceiver = computeAndSaveReceiver(signature, codegen, referencedFunction.getExtensionReceiverParameter()); computeAndSaveArguments(fakeArguments, codegen); ResolvedCall fakeResolvedCall = new DelegatingResolvedCall(resolvedCall) { @NotNull @Override - public ReceiverValue getReceiverArgument() { + public ReceiverValue getExtensionReceiver() { return extensionReceiver; } @NotNull @Override - public ReceiverValue getThisObject() { - return thisObject; + public ReceiverValue getDispatchReceiver() { + return dispatchReceiver; } @NotNull @@ -3316,17 +3316,17 @@ public class ExpressionCodegen extends JetVisitor implem ConstructorDescriptor constructor = (ConstructorDescriptor) resolvedCall.getResultingDescriptor(); - ReceiverParameterDescriptor expectedThisObject = constructor.getExpectedThisObject(); - if (expectedThisObject != null) { - Type receiverType = typeMapper.mapType(expectedThisObject.getType()); - generateReceiverValue(resolvedCall.getThisObject(), receiverType); + ReceiverParameterDescriptor dispatchReceiver = constructor.getDispatchReceiverParameter(); + if (dispatchReceiver != null) { + Type receiverType = typeMapper.mapType(dispatchReceiver.getType()); + generateReceiverValue(resolvedCall.getDispatchReceiver(), receiverType); } MutableClosure closure = bindingContext.get(CLOSURE, constructor.getContainingDeclaration()); - // Resolved call to local class constructor doesn't have expectedThisObject, so we need to generate closure on stack + // Resolved call to local class constructor doesn't have dispatchReceiver, so we need to generate closure on stack // See StackValue.receiver for more info - pushClosureOnStack(closure, expectedThisObject != null, defaultCallGenerator); + pushClosureOnStack(closure, dispatchReceiver != null, defaultCallGenerator); ConstructorDescriptor originalOfSamAdapter = (ConstructorDescriptor) SamCodegenUtil.getOriginalIfSamAdapter(constructor); CallableMethod method = typeMapper.mapToCallableMethod(originalOfSamAdapter == null ? constructor : originalOfSamAdapter); @@ -3463,7 +3463,7 @@ public class ExpressionCodegen extends JetVisitor implem else { gen(array, arrayType); // intrinsic method - int index = operationDescriptor.getReceiverParameter() != null ? 1 : 0; + int index = operationDescriptor.getExtensionReceiverParameter() != null ? 1 : 0; for (JetExpression jetExpression : expression.getIndexExpressions()) { gen(jetExpression, argumentTypes[index]); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index 1d15e9c7706..c9fc22aa137 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -39,7 +39,6 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.JetNamedFunction; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.DescriptorUtils; -import org.jetbrains.jet.lang.resolve.ResolvePackage; import org.jetbrains.jet.lang.resolve.annotations.AnnotationsPackage; import org.jetbrains.jet.lang.resolve.calls.CallResolverUtil; import org.jetbrains.jet.lang.resolve.constants.ArrayValue; @@ -236,7 +235,7 @@ public class FunctionCodegen extends ParentCodegenAware { } if (kind == JvmMethodParameterKind.RECEIVER) { - ReceiverParameterDescriptor receiver = functionDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiver = functionDescriptor.getExtensionReceiverParameter(); nullableType = receiver == null || receiver.getType().isNullable(); } else { @@ -271,12 +270,12 @@ public class FunctionCodegen extends ParentCodegenAware { @Nullable private static Type getThisTypeForFunction(@NotNull FunctionDescriptor functionDescriptor, @NotNull MethodContext context, @NotNull JetTypeMapper typeMapper) { - ReceiverParameterDescriptor expectedThisObject = functionDescriptor.getExpectedThisObject(); + ReceiverParameterDescriptor dispatchReceiver = functionDescriptor.getDispatchReceiverParameter(); if (functionDescriptor instanceof ConstructorDescriptor) { return typeMapper.mapType(functionDescriptor); } - else if (expectedThisObject != null) { - return typeMapper.mapType(expectedThisObject.getType()); + else if (dispatchReceiver != null) { + return typeMapper.mapType(dispatchReceiver.getType()); } else if (isFunctionLiteral(functionDescriptor) || isLocalNamedFun(functionDescriptor)) { return typeMapper.mapType(context.getThisDescriptor()); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java index f72b85811f8..8a5205bbf59 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java @@ -172,7 +172,7 @@ public class JvmCodegenUtil { if (!isCallInsideSameClassAsDeclared(property, context) && !isDebuggerContext(context)) return false; // Delegated and extension properties have no backing fields - if (isDelegated || property.getReceiverParameter() != null) return false; + if (isDelegated || property.getExtensionReceiverParameter() != null) return false; // Class object properties cannot be accessed directly because their backing fields are stored in the containing class if (DescriptorUtils.isClassObject(property.getContainingDeclaration())) return false; @@ -203,7 +203,7 @@ public class JvmCodegenUtil { } @Nullable - public static ClassDescriptor getExpectedThisObjectForConstructorCall( + public static ClassDescriptor getDispatchReceiverParameterForConstructorCall( @NotNull ConstructorDescriptor descriptor, @Nullable CalculatedClosure closure ) { @@ -214,10 +214,10 @@ public class JvmCodegenUtil { //for compilation against binaries //TODO: It's best to use this code also for compilation against sources - // but sometimes structures that have expectedThisObject (bug?) mapped to static classes - ReceiverParameterDescriptor expectedThisObject = descriptor.getExpectedThisObject(); - if (expectedThisObject != null) { - ClassDescriptor expectedThisClass = (ClassDescriptor) expectedThisObject.getContainingDeclaration(); + // but sometimes structures that have dispatchReceiver (bug?) mapped to static classes + ReceiverParameterDescriptor dispatchReceiver = descriptor.getDispatchReceiverParameter(); + if (dispatchReceiver != null) { + ClassDescriptor expectedThisClass = (ClassDescriptor) dispatchReceiver.getContainingDeclaration(); if (!expectedThisClass.getKind().isSingleton()) { return expectedThisClass; } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java b/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java index f28364c9683..5faa1df3d12 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java @@ -91,7 +91,7 @@ public class JvmRuntimeTypes { @NotNull public Collection getSupertypesForClosure(@NotNull FunctionDescriptor descriptor) { - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = descriptor.getExtensionReceiverParameter(); List typeArguments = new ArrayList(2); @@ -127,21 +127,21 @@ public class JvmRuntimeTypes { @NotNull public Collection getSupertypesForFunctionReference(@NotNull FunctionDescriptor descriptor) { - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); - ReceiverParameterDescriptor expectedThisObject = descriptor.getExpectedThisObject(); + ReceiverParameterDescriptor extensionReceiver = descriptor.getExtensionReceiverParameter(); + ReceiverParameterDescriptor dispatchReceiver = descriptor.getDispatchReceiverParameter(); List typeArguments = new ArrayList(2); ClassDescriptor classDescriptor; JetType receiverType; - if (receiverParameter != null) { + if (extensionReceiver != null) { classDescriptor = kExtensionFunctionImpl; - receiverType = receiverParameter.getType(); + receiverType = extensionReceiver.getType(); typeArguments.add(new TypeProjectionImpl(receiverType)); } - else if (expectedThisObject != null) { + else if (dispatchReceiver != null) { classDescriptor = kMemberFunctionImpl; - receiverType = expectedThisObject.getType(); + receiverType = dispatchReceiver.getType(); typeArguments.add(new TypeProjectionImpl(receiverType)); } else { @@ -165,7 +165,7 @@ public class JvmRuntimeTypes { receiverType, ExpressionTypingUtils.getValueParametersTypes(descriptor.getValueParameters()), descriptor.getReturnType(), - receiverParameter != null + extensionReceiver != null ); return Arrays.asList(kFunctionImplType, kFunctionType); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java index d1d0bb676ab..b7107b3984d 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java @@ -206,7 +206,7 @@ public class PropertyCodegen { private void generateSyntheticMethodIfNeeded(@NotNull PropertyDescriptor descriptor) { if (descriptor.getAnnotations().isEmpty()) return; - ReceiverParameterDescriptor receiver = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiver = descriptor.getExtensionReceiverParameter(); String name = JvmAbi.getSyntheticMethodNameForAnnotatedProperty(descriptor.getName()); String desc = receiver == null ? "()V" : "(" + typeMapper.mapType(receiver.getType()) + ")V"; @@ -395,7 +395,7 @@ public class PropertyCodegen { v.areturn(type); } else if (callableDescriptor instanceof PropertySetterDescriptor) { - ReceiverParameterDescriptor receiverParameter = propertyDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = propertyDescriptor.getExtensionReceiverParameter(); if (receiverParameter != null) { paramCode += codegen.typeMapper.mapType(receiverParameter.getType()).getSize(); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java index 86736b6fe58..664217697f0 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java @@ -333,7 +333,7 @@ public abstract class StackValue { ExpressionCodegen codegen, @Nullable CallableMethod callableMethod ) { - if (resolvedCall.getThisObject().exists() || resolvedCall.getReceiverArgument().exists() || isLocalFunCall(callableMethod)) { + if (resolvedCall.getDispatchReceiver().exists() || resolvedCall.getExtensionReceiver().exists() || isLocalFunCall(callableMethod)) { return new CallReceiver(resolvedCall, receiver, codegen, callableMethod, true); } return receiver; @@ -692,7 +692,7 @@ public abstract class StackValue { v.store(firstParamIndex, type); } - ReceiverValue receiverParameter = resolvedGetCall.getReceiverArgument(); + ReceiverValue receiverParameter = resolvedGetCall.getExtensionReceiver(); int receiverIndex = -1; if (receiverParameter.exists()) { Type type = codegen.typeMapper.mapType(receiverParameter.getType()); @@ -700,9 +700,9 @@ public abstract class StackValue { v.store(receiverIndex, type); } - ReceiverValue thisObject = resolvedGetCall.getThisObject(); + ReceiverValue dispatchReceiver = resolvedGetCall.getDispatchReceiver(); int thisIndex = -1; - if (thisObject.exists()) { + if (dispatchReceiver.exists()) { thisIndex = frame.enterTemp(OBJECT_TYPE); v.store(thisIndex, OBJECT_TYPE); } @@ -723,14 +723,14 @@ public abstract class StackValue { throw new UnsupportedOperationException(); } - if (resolvedSetCall.getThisObject().exists()) { - if (resolvedSetCall.getReceiverArgument().exists()) { - codegen.generateReceiverValue(resolvedSetCall.getThisObject(), OBJECT_TYPE); + if (resolvedSetCall.getDispatchReceiver().exists()) { + if (resolvedSetCall.getExtensionReceiver().exists()) { + codegen.generateReceiverValue(resolvedSetCall.getDispatchReceiver(), OBJECT_TYPE); } v.load(realReceiverIndex, realReceiverType); } else { - if (resolvedSetCall.getReceiverArgument().exists()) { + if (resolvedSetCall.getExtensionReceiver().exists()) { v.load(realReceiverIndex, realReceiverType); } else { @@ -780,13 +780,13 @@ public abstract class StackValue { } } - if (call.getThisObject().exists()) { - if (call.getReceiverArgument().exists()) { + if (call.getDispatchReceiver().exists()) { + if (call.getExtensionReceiver().exists()) { return false; } } else { - if (codegen.typeMapper.mapType(call.getResultingDescriptor().getReceiverParameter().getType()) + if (codegen.typeMapper.mapType(call.getResultingDescriptor().getExtensionReceiverParameter().getType()) .getSize() != 1) { return false; } @@ -1107,14 +1107,14 @@ public abstract class StackValue { ) { CallableDescriptor descriptor = resolvedCall.getResultingDescriptor(); - ReceiverParameterDescriptor expectedThisObject = descriptor.getExpectedThisObject(); - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor dispatchReceiver = descriptor.getDispatchReceiverParameter(); + ReceiverParameterDescriptor extensionReceiver = descriptor.getExtensionReceiverParameter(); - if (receiverParameter != null) { - return callableMethod != null ? callableMethod.getReceiverClass() : typeMapper.mapType(receiverParameter.getType()); + if (extensionReceiver != null) { + return callableMethod != null ? callableMethod.getReceiverClass() : typeMapper.mapType(extensionReceiver.getType()); } - else if (expectedThisObject != null) { - return callableMethod != null ? callableMethod.getThisType() : typeMapper.mapType(expectedThisObject.getType()); + else if (dispatchReceiver != null) { + return callableMethod != null ? callableMethod.getThisType() : typeMapper.mapType(dispatchReceiver.getType()); } else if (isLocalFunCall(callableMethod)) { return callableMethod.getGenerateCalleeType(); @@ -1127,28 +1127,28 @@ public abstract class StackValue { public void put(Type type, InstructionAdapter v) { CallableDescriptor descriptor = resolvedCall.getResultingDescriptor(); - ReceiverValue thisObject = resolvedCall.getThisObject(); - ReceiverValue receiverArgument = resolvedCall.getReceiverArgument(); + ReceiverValue dispatchReceiver = resolvedCall.getDispatchReceiver(); + ReceiverValue extensionReceiver = resolvedCall.getExtensionReceiver(); int depth = 0; - if (thisObject.exists()) { + if (dispatchReceiver.exists()) { if (!AnnotationsPackage.isPlatformStaticInObject(descriptor)) { - if (receiverArgument.exists()) { + if (extensionReceiver.exists()) { //noinspection ConstantConditions Type resultType = callableMethod != null ? callableMethod.getOwner() : - codegen.typeMapper.mapType(descriptor.getExpectedThisObject().getType()); + codegen.typeMapper.mapType(descriptor.getDispatchReceiverParameter().getType()); - codegen.generateReceiverValue(thisObject, resultType); + codegen.generateReceiverValue(dispatchReceiver, resultType); } else { - genReceiver(v, thisObject, type, null, 0); + genReceiver(v, dispatchReceiver, type, null, 0); } depth = 1; } } else if (isLocalFunCall(callableMethod)) { - assert receiver == none() || receiverArgument.exists() : + assert receiver == none() || extensionReceiver.exists() : "Receiver should be present only for local extension function: " + callableMethod; StackValue value = codegen.findLocalOrCapturedValue(descriptor.getOriginal()); assert value != null : "Local fun should be found in locals or in captured params: " + resolvedCall; @@ -1157,8 +1157,8 @@ public abstract class StackValue { depth = 1; } - if (putReceiverArgumentOnStack && receiverArgument.exists()) { - genReceiver(v, receiverArgument, type, descriptor.getReceiverParameter(), depth); + if (putReceiverArgumentOnStack && extensionReceiver.exists()) { + genReceiver(v, extensionReceiver, type, descriptor.getExtensionReceiverParameter(), depth); } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/TailRecursionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/TailRecursionCodegen.java index f6295545a05..63e8526f53d 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/TailRecursionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/TailRecursionCodegen.java @@ -75,7 +75,7 @@ public class TailRecursionCodegen { } assignParameterValues(fd, callable, arguments); if (callable.getReceiverClass() != null) { - if (resolvedCall.getReceiverArgument() != fd.getReceiverParameter().getValue()) { + if (resolvedCall.getExtensionReceiver() != fd.getExtensionReceiverParameter().getValue()) { StackValue expression = context.getReceiverExpression(codegen.typeMapper); expression.store(callable.getReceiverClass(), v); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/MutableClosure.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/MutableClosure.java index b4325e07627..cc9193b57ff 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/MutableClosure.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/MutableClosure.java @@ -56,7 +56,7 @@ public final class MutableClosure implements CalculatedClosure { DeclarationDescriptor classContainer = classDescriptor.getContainingDeclaration(); if (classContainer instanceof CallableMemberDescriptor) { CallableMemberDescriptor member = getDirectMember((CallableMemberDescriptor) classContainer); - if (member.getReceiverParameter() != null) { + if (member.getExtensionReceiverParameter() != null) { return member; } } @@ -86,7 +86,7 @@ public final class MutableClosure implements CalculatedClosure { public JetType getCaptureReceiverType() { if (captureReceiver) { //noinspection ConstantConditions - ReceiverParameterDescriptor parameter = enclosingReceiverDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor parameter = enclosingReceiverDescriptor.getExtensionReceiverParameter(); assert parameter != null : "Receiver parameter should exist in " + enclosingReceiverDescriptor; return parameter.getType(); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java b/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java index 468da287a2b..13366024a9e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/context/CodegenContext.java @@ -109,7 +109,7 @@ public abstract class CodegenContext { public final CallableDescriptor getCallableDescriptorWithReceiver() { if (contextDescriptor instanceof CallableDescriptor) { CallableDescriptor callableDescriptor = (CallableDescriptor) getContextDescriptor(); - return callableDescriptor.getReceiverParameter() != null ? callableDescriptor : null; + return callableDescriptor.getExtensionReceiverParameter() != null ? callableDescriptor : null; } return null; } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/context/LocalLookup.java b/compiler/backend/src/org/jetbrains/jet/codegen/context/LocalLookup.java index ff50ad8f182..6e4e99753f9 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/context/LocalLookup.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/context/LocalLookup.java @@ -125,7 +125,7 @@ public interface LocalLookup { ) { if (closure.getEnclosingReceiverDescriptor() != d) return null; - JetType receiverType = ((CallableDescriptor) d).getReceiverParameter().getType(); + JetType receiverType = ((CallableDescriptor) d).getExtensionReceiverParameter().getType(); Type type = state.getTypeMapper().mapType(receiverType); StackValue innerValue = StackValue.field(type, classType, CAPTURED_RECEIVER_FIELD, false); closure.setCaptureReceiver(); @@ -137,7 +137,7 @@ public interface LocalLookup { @Override public StackValue outerValue(@NotNull EnclosedValueDescriptor d, @NotNull ExpressionCodegen codegen) { CallableDescriptor descriptor = (CallableDescriptor) d.getDescriptor(); - return StackValue.local(descriptor.getExpectedThisObject() != null ? 1 : 0, d.getType()); + return StackValue.local(descriptor.getDispatchReceiverParameter() != null ? 1 : 0, d.getType()); } }; diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java b/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java index 5778fa94169..053b3807f31 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java @@ -59,7 +59,7 @@ public class MethodContext extends CodegenContext { public StackValue getReceiverExpression(JetTypeMapper typeMapper) { assert getCallableDescriptorWithReceiver() != null; @SuppressWarnings("ConstantConditions") - Type asmType = typeMapper.mapType(getCallableDescriptorWithReceiver().getReceiverParameter().getType()); + Type asmType = typeMapper.mapType(getCallableDescriptorWithReceiver().getExtensionReceiverParameter().getType()); return StackValue.local(AsmUtil.getReceiverIndex(this, getContextDescriptor()), asmType); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Clone.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Clone.java index 4636bd760d7..0aa71a07f05 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Clone.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/Clone.java @@ -58,8 +58,8 @@ public class Clone extends IntrinsicMethod { } private static boolean isSuperCall(@NotNull ResolvedCall resolvedCall) { - ReceiverValue thisObject = resolvedCall.getThisObject(); - return thisObject instanceof ExpressionReceiver && - ((ExpressionReceiver) thisObject).getExpression() instanceof JetSuperExpression; + ReceiverValue dispatchReceiver = resolvedCall.getDispatchReceiver(); + return dispatchReceiver instanceof ExpressionReceiver && + ((ExpressionReceiver) dispatchReceiver).getExpression() instanceof JetSuperExpression; } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicsMap.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicsMap.java index a402857ab8e..24f83c36b1e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicsMap.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicsMap.java @@ -106,7 +106,7 @@ class IntrinsicsMap { @Nullable private static FqNameUnsafe getReceiverParameterFqName(@NotNull CallableMemberDescriptor descriptor) { - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = descriptor.getExtensionReceiverParameter(); if (receiverParameter == null) return null; ClassifierDescriptor classifier = receiverParameter.getType().getConstructor().getDeclarationDescriptor(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java index 737d4333065..a74245fb92d 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java @@ -524,7 +524,7 @@ public class JetTypeMapper { Type calleeType = isLocalNamedFun(functionDescriptor) ? owner : null; Type receiverParameterType; - ReceiverParameterDescriptor receiverParameter = functionDescriptor.getOriginal().getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = functionDescriptor.getOriginal().getExtensionReceiverParameter(); if (receiverParameter != null) { receiverParameterType = mapType(receiverParameter.getType()); } @@ -624,7 +624,7 @@ public class JetTypeMapper { sw.writeParametersStart(); writeThisIfNeeded(f, kind, sw); - ReceiverParameterDescriptor receiverParameter = f.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = f.getExtensionReceiverParameter(); if (receiverParameter != null) { writeParameter(sw, JvmMethodParameterKind.RECEIVER, receiverParameter.getType()); } @@ -664,7 +664,7 @@ public class JetTypeMapper { public Method mapDefaultMethod(@NotNull FunctionDescriptor functionDescriptor, @NotNull OwnerKind kind, @NotNull CodegenContext context) { Method jvmSignature = mapSignature(functionDescriptor, kind).getAsmMethod(); Type ownerType = mapOwner(functionDescriptor, isCallInsideSameModuleAsDeclared(functionDescriptor, context, getOutDirectory())); - String descriptor = getDefaultDescriptor(jvmSignature, functionDescriptor.getReceiverParameter() != null); + String descriptor = getDefaultDescriptor(jvmSignature, functionDescriptor.getExtensionReceiverParameter() != null); boolean isConstructor = "".equals(jvmSignature.getName()); if (!isStaticMethod(kind, functionDescriptor) && !isConstructor) { descriptor = descriptor.replace("(", "(" + ownerType.getDescriptor()); @@ -713,7 +713,7 @@ public class JetTypeMapper { if (kind == OwnerKind.TRAIT_IMPL) { thisType = getTraitImplThisParameterClass((ClassDescriptor) descriptor.getContainingDeclaration()); } - else if (isAccessor(descriptor) && descriptor.getExpectedThisObject() != null) { + else if (isAccessor(descriptor) && descriptor.getDispatchReceiverParameter() != null) { thisType = (ClassDescriptor) descriptor.getContainingDeclaration(); } else return; @@ -804,7 +804,7 @@ public class JetTypeMapper { private void writeAdditionalConstructorParameters(@NotNull ConstructorDescriptor descriptor, @NotNull BothSignatureWriter sw) { CalculatedClosure closure = bindingContext.get(CodegenBinding.CLOSURE, descriptor.getContainingDeclaration()); - ClassDescriptor captureThis = getExpectedThisObjectForConstructorCall(descriptor, closure); + ClassDescriptor captureThis = getDispatchReceiverParameterForConstructorCall(descriptor, closure); if (captureThis != null) { writeParameter(sw, JvmMethodParameterKind.OUTER, captureThis.getDefaultType()); } @@ -930,7 +930,7 @@ public class JetTypeMapper { return asmTypeForAnonymousClass(bindingContext, (FunctionDescriptor) descriptor); } else if (descriptor instanceof PropertyDescriptor || descriptor instanceof FunctionDescriptor) { - ReceiverParameterDescriptor receiverParameter = ((CallableDescriptor) descriptor).getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = ((CallableDescriptor) descriptor).getExtensionReceiverParameter(); assert receiverParameter != null : "Callable should have a receiver parameter: " + descriptor; return StackValue.sharedTypeForType(mapType(receiverParameter.getType())); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java index c04b65526c9..a162d1bc20c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java @@ -215,7 +215,7 @@ public class SignaturesPropagationData { new Function() { @Override public TypeAndName fun(FunctionDescriptor superFunction) { - ReceiverParameterDescriptor receiver = superFunction.getReceiverParameter(); + ReceiverParameterDescriptor receiver = superFunction.getExtensionReceiverParameter(); int index = receiver != null ? originalIndex - 1 : originalIndex; if (index == -1) { assert receiver != null : "can't happen: index is -1, while function is not extension"; @@ -318,7 +318,7 @@ public class SignaturesPropagationData { boolean someSupersNotExtension = false; for (FunctionDescriptor superFunction : superFunctions) { - if (superFunction.getReceiverParameter() != null) { + if (superFunction.getExtensionReceiverParameter() != null) { someSupersExtension = true; } else { @@ -343,7 +343,7 @@ public class SignaturesPropagationData { boolean someSupersNotVararg = false; for (FunctionDescriptor superFunction : superFunctions) { int originalIndex = originalParam.getIndex(); - int index = superFunction.getReceiverParameter() != null ? originalIndex - 1 : originalIndex; + int index = superFunction.getExtensionReceiverParameter() != null ? originalIndex - 1 : originalIndex; if (index != -1 && superFunction.getValueParameters().get(index).getVarargElementType() != null) { someSupersVararg = true; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 58d11b7f078..7387754bcc5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -929,10 +929,10 @@ public class JetControlFlowProcessor { private ReceiverValue getExplicitReceiverValue(ResolvedCall resolvedCall) { switch(resolvedCall.getExplicitReceiverKind()) { - case THIS_OBJECT: - return resolvedCall.getThisObject(); - case RECEIVER_ARGUMENT: - return resolvedCall.getReceiverArgument(); + case DISPATCH_RECEIVER: + return resolvedCall.getDispatchReceiver(); + case EXTENSION_RECEIVER: + return resolvedCall.getExtensionReceiver(); default: return ReceiverValue.NO_RECEIVER; } @@ -1533,8 +1533,8 @@ public class JetControlFlowProcessor { private Map getReceiverValues(ResolvedCall resolvedCall) { SmartFMap receiverValues = SmartFMap.emptyMap(); JetElement callElement = resolvedCall.getCall().getCallElement(); - receiverValues = getReceiverValues(callElement, resolvedCall.getThisObject(), receiverValues); - receiverValues = getReceiverValues(callElement, resolvedCall.getReceiverArgument(), receiverValues); + receiverValues = getReceiverValues(callElement, resolvedCall.getDispatchReceiver(), receiverValues); + receiverValues = getReceiverValues(callElement, resolvedCall.getExtensionReceiver(), receiverValues); return receiverValues; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java index 076261ae7b2..e6ad592a8ca 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java @@ -794,9 +794,9 @@ public class JetFlowInformationProvider { new TailRecursionDetector(subroutine, callInstruction) ); - boolean sameThisObject = sameThisObject(resolvedCall); + boolean sameDispatchReceiver = sameDispatchReceiver(resolvedCall); - TailRecursionKind kind = isTail && sameThisObject ? TAIL_CALL : NON_TAIL; + TailRecursionKind kind = isTail && sameDispatchReceiver ? TAIL_CALL : NON_TAIL; KindAndCall kindAndCall = calls.get(element); calls.put(element, @@ -831,31 +831,31 @@ public class JetFlowInformationProvider { } } - private boolean sameThisObject(ResolvedCall resolvedCall) { + private boolean sameDispatchReceiver(ResolvedCall resolvedCall) { // A tail call is not allowed to change dispatch receiver // class C { // fun foo(other: C) { // other.foo(this) // not a tail call // } // } - ReceiverParameterDescriptor thisObject = resolvedCall.getResultingDescriptor().getExpectedThisObject(); - ReceiverValue thisObjectValue = resolvedCall.getThisObject(); - if (thisObject == null || !thisObjectValue.exists()) return true; + ReceiverParameterDescriptor dispatchReceiverParameter = resolvedCall.getResultingDescriptor().getDispatchReceiverParameter(); + ReceiverValue dispatchReceiverValue = resolvedCall.getDispatchReceiver(); + if (dispatchReceiverParameter == null || !dispatchReceiverValue.exists()) return true; DeclarationDescriptor classDescriptor = null; - if (thisObjectValue instanceof ThisReceiver) { + if (dispatchReceiverValue instanceof ThisReceiver) { // foo() -- implicit receiver - classDescriptor = ((ThisReceiver) thisObjectValue).getDeclarationDescriptor(); + classDescriptor = ((ThisReceiver) dispatchReceiverValue).getDeclarationDescriptor(); } - else if (thisObjectValue instanceof ExpressionReceiver) { - JetExpression expression = JetPsiUtil.deparenthesize(((ExpressionReceiver) thisObjectValue).getExpression()); + else if (dispatchReceiverValue instanceof ExpressionReceiver) { + JetExpression expression = JetPsiUtil.deparenthesize(((ExpressionReceiver) dispatchReceiverValue).getExpression()); if (expression instanceof JetThisExpression) { // this.foo() -- explicit receiver JetThisExpression thisExpression = (JetThisExpression) expression; classDescriptor = trace.get(BindingContext.REFERENCE_TARGET, thisExpression.getInstanceReference()); } } - return thisObject.getContainingDeclaration() == classDescriptor; + return dispatchReceiverParameter.getContainingDeclaration() == classDescriptor; } private static TailRecursionKind combineKinds(TailRecursionKind kind, @Nullable TailRecursionKind existingKind) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/pseudocodeUtil.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/pseudocodeUtil.kt index 5d4f12dcd11..e80712626ef 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/pseudocodeUtil.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/pseudocodeUtil.kt @@ -37,14 +37,14 @@ fun getReceiverTypePredicate(resolvedCall: ResolvedCall<*>, receiverValue: Recei if (callableDescriptor == null) return null when (receiverValue) { - resolvedCall.getReceiverArgument() -> { - val receiverParameter = callableDescriptor.getReceiverParameter() + resolvedCall.getExtensionReceiver() -> { + val receiverParameter = callableDescriptor.getExtensionReceiverParameter() if (receiverParameter != null) return receiverParameter.getType().getSubtypesPredicate() } - resolvedCall.getThisObject() -> { + resolvedCall.getDispatchReceiver() -> { val rootCallableDescriptors = OverridingUtil.getTopmostOverridenDescriptors(callableDescriptor) return or(rootCallableDescriptors.map { - it.getExpectedThisObject()?.getType()?.let { TypeUtils.makeNullableIfNeeded(it, resolvedCall.isSafeCall()) }?.getSubtypesPredicate() + it.getDispatchReceiverParameter()?.getType()?.let { TypeUtils.makeNullableIfNeeded(it, resolvedCall.isSafeCall()) }?.getSubtypesPredicate() }.filterNotNull()) } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/Renderers.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/Renderers.java index 18c9a874096..1baf06619b6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/Renderers.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/Renderers.java @@ -228,7 +228,7 @@ public class Renderers { .text("None of the following substitutions"); for (CallableDescriptor substitutedDescriptor : substitutedDescriptors) { - JetType receiverType = DescriptorUtils.getReceiverParameterType(substitutedDescriptor.getReceiverParameter()); + JetType receiverType = DescriptorUtils.getReceiverParameterType(substitutedDescriptor.getExtensionReceiverParameter()); final Collection errorPositions = Sets.newHashSet(); List parameterTypes = Lists.newArrayList(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt index 10c57f24702..261705e0ee9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt @@ -567,8 +567,8 @@ fun isIntegerType(value: Any?) = value is Byte || value is Short || value is Int private fun getReceiverExpressionType(resolvedCall: ResolvedCall<*>): JetType? { return when (resolvedCall.getExplicitReceiverKind()) { - ExplicitReceiverKind.THIS_OBJECT -> resolvedCall.getThisObject().getType() - ExplicitReceiverKind.RECEIVER_ARGUMENT -> resolvedCall.getReceiverArgument().getType() + ExplicitReceiverKind.DISPATCH_RECEIVER -> resolvedCall.getDispatchReceiver().getType() + ExplicitReceiverKind.EXTENSION_RECEIVER -> resolvedCall.getExtensionReceiver().getType() ExplicitReceiverKind.NO_EXPLICIT_RECEIVER -> null ExplicitReceiverKind.BOTH_RECEIVERS -> null else -> null diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/Call.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/Call.java index 13298b46952..19fd6d5cc34 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/Call.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/Call.java @@ -34,7 +34,7 @@ public interface Call { ReceiverValue getExplicitReceiver(); @NotNull - ReceiverValue getThisObject(); + ReceiverValue getDispatchReceiver(); @Nullable JetExpression getCalleeExpression(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java index e25ccb16202..5b26d9db4af 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java @@ -319,7 +319,7 @@ public class DeclarationResolver { public boolean apply(@Nullable DeclarationDescriptor descriptor) { if (descriptor instanceof PropertyDescriptor) { PropertyDescriptor propertyDescriptor = (PropertyDescriptor)descriptor; - return propertyDescriptor.getReceiverParameter() == null; + return propertyDescriptor.getExtensionReceiverParameter() == null; } return true; } @@ -459,7 +459,7 @@ public class DeclarationResolver { new Function1() { @Override public Boolean invoke(VariableDescriptor descriptor) { - return descriptor.getReceiverParameter() == null; + return descriptor.getExtensionReceiverParameter() == null; } } ) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java index 2ca7eae7add..cb10c5265dc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java @@ -224,7 +224,7 @@ public class DelegatedPropertyResolver { expressionTypingServices, trace, scope, DataFlowInfo.EMPTY, TypeUtils.NO_EXPECTED_TYPE); - boolean hasThis = propertyDescriptor.getReceiverParameter() != null || propertyDescriptor.getExpectedThisObject() != null; + boolean hasThis = propertyDescriptor.getExtensionReceiverParameter() != null || propertyDescriptor.getDispatchReceiverParameter() != null; List arguments = Lists.newArrayList(); JetPsiFactory psiFactory = JetPsiFactory(delegateExpression); @@ -358,11 +358,11 @@ public class DelegatedPropertyResolver { } private void addConstraintForThisValue(ConstraintSystem constraintSystem, FunctionDescriptor resultingDescriptor) { - ReceiverParameterDescriptor receiverParameter = propertyDescriptor.getReceiverParameter(); - ReceiverParameterDescriptor thisObject = propertyDescriptor.getExpectedThisObject(); + ReceiverParameterDescriptor extensionReceiver = propertyDescriptor.getExtensionReceiverParameter(); + ReceiverParameterDescriptor dispatchReceiver = propertyDescriptor.getDispatchReceiverParameter(); JetType typeOfThis = - receiverParameter != null ? receiverParameter.getType() : - thisObject != null ? thisObject.getType() : + extensionReceiver != null ? extensionReceiver.getType() : + dispatchReceiver != null ? dispatchReceiver.getType() : KotlinBuiltIns.getInstance().getNullableNothingType(); List valueParameters = resultingDescriptor.getValueParameters(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index fb9ac27fe9b..7604231f857 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -362,7 +362,7 @@ public class DescriptorResolver { Visibility visibility = resolveVisibilityFromModifiers(function, getDefaultVisibility(function, containingDescriptor)); functionDescriptor.initialize( receiverType, - getExpectedThisObjectIfNeeded(containingDescriptor), + getDispatchReceiverParameterIfNeeded(containingDescriptor), typeParameterDescriptors, valueParameterDescriptors, returnType, @@ -959,7 +959,7 @@ public class DescriptorResolver { } ReceiverParameterDescriptor receiverDescriptor = - DescriptorFactory.createReceiverParameterForCallable(propertyDescriptor, receiverType); + DescriptorFactory.createExtensionReceiverParameterForCallable(propertyDescriptor, receiverType); ReceiverParameterDescriptor implicitInitializerReceiver = property.hasDelegate() ? NO_RECEIVER_PARAMETER : receiverDescriptor; @@ -968,7 +968,7 @@ public class DescriptorResolver { JetType type = getVariableType(propertyDescriptor, propertyScope, property, dataFlowInfo, true, trace); - propertyDescriptor.setType(type, typeParameterDescriptors, getExpectedThisObjectIfNeeded(containingDeclaration), + propertyDescriptor.setType(type, typeParameterDescriptors, getDispatchReceiverParameterIfNeeded(containingDeclaration), receiverDescriptor); PropertyGetterDescriptorImpl getter = resolvePropertyGetterDescriptor(scopeWithTypeParameters, property, propertyDescriptor, trace); @@ -1332,7 +1332,7 @@ public class DescriptorResolver { toSourceElement(parameter) ); propertyDescriptor.setType(type, Collections.emptyList(), - getExpectedThisObjectIfNeeded(classDescriptor), NO_RECEIVER_PARAMETER); + getDispatchReceiverParameterIfNeeded(classDescriptor), NO_RECEIVER_PARAMETER); PropertyGetterDescriptorImpl getter = DescriptorFactory.createDefaultGetter(propertyDescriptor); PropertySetterDescriptor setter = diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java index 1f5af68ce05..64657cb3441 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java @@ -75,7 +75,7 @@ public class FunctionDescriptorUtil { @NotNull public static JetScope getFunctionInnerScope(@NotNull JetScope outerScope, @NotNull FunctionDescriptor descriptor, @NotNull BindingTrace trace) { WritableScope parameterScope = new WritableScopeImpl(outerScope, descriptor, new TraceBasedRedeclarationHandler(trace), "Function inner scope"); - ReceiverParameterDescriptor receiver = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiver = descriptor.getExtensionReceiverParameter(); if (receiver != null) { parameterScope.setImplicitReceiver(receiver); } @@ -93,14 +93,14 @@ public class FunctionDescriptorUtil { public static void initializeFromFunctionType( @NotNull FunctionDescriptorImpl functionDescriptor, @NotNull JetType functionType, - @Nullable ReceiverParameterDescriptor expectedThisObject, + @Nullable ReceiverParameterDescriptor dispatchReceiverParameter, @NotNull Modality modality, @NotNull Visibility visibility ) { assert KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(functionType); functionDescriptor.initialize(KotlinBuiltIns.getInstance().getReceiverType(functionType), - expectedThisObject, + dispatchReceiverParameter, Collections.emptyList(), KotlinBuiltIns.getInstance().getValueParameters(functionDescriptor, functionType), KotlinBuiltIns.getInstance().getReturnTypeFromFunctionType(functionType), @@ -149,10 +149,10 @@ public class FunctionDescriptorUtil { ); idx++; } - ReceiverParameterDescriptor receiver = function.getReceiverParameter(); + ReceiverParameterDescriptor receiver = function.getExtensionReceiverParameter(); descriptor.initialize( receiver == null ? null : receiver.getType(), - function.getExpectedThisObject(), + function.getDispatchReceiverParameter(), function.getTypeParameters(), parameters, function.getReturnType(), diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MemberComparator.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MemberComparator.java index 21c14726324..56ecfa239bd 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MemberComparator.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MemberComparator.java @@ -37,7 +37,7 @@ public class MemberComparator implements Comparator { return 6; } else if (descriptor instanceof PropertyDescriptor) { - if (((PropertyDescriptor)descriptor).getReceiverParameter() == null) { + if (((PropertyDescriptor)descriptor).getExtensionReceiverParameter() == null) { return 5; } else { @@ -45,7 +45,7 @@ public class MemberComparator implements Comparator { } } else if (descriptor instanceof FunctionDescriptor) { - if (((FunctionDescriptor)descriptor).getReceiverParameter() == null) { + if (((FunctionDescriptor)descriptor).getExtensionReceiverParameter() == null) { return 3; } else { @@ -74,8 +74,8 @@ public class MemberComparator implements Comparator { CallableDescriptor c1 = (CallableDescriptor) o1; CallableDescriptor c2 = (CallableDescriptor) o2; - ReceiverParameterDescriptor c1ReceiverParameter = c1.getReceiverParameter(); - ReceiverParameterDescriptor c2ReceiverParameter = c2.getReceiverParameter(); + ReceiverParameterDescriptor c1ReceiverParameter = c1.getExtensionReceiverParameter(); + ReceiverParameterDescriptor c2ReceiverParameter = c2.getExtensionReceiverParameter(); assert (c1ReceiverParameter != null) == (c2ReceiverParameter != null); if (c1ReceiverParameter != null) { String r1 = RENDERER.renderType(c1ReceiverParameter.getType()); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallCompleter.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallCompleter.kt index 03d04ea76b0..332791d32bf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallCompleter.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallCompleter.kt @@ -184,7 +184,7 @@ public class CallCompleter( return } - val receiverType = if (getReceiverArgument().exists()) getReceiverArgument().getType() else null + val receiverType = if (getExtensionReceiver().exists()) getExtensionReceiver().getType() else null val errorData = InferenceErrorData.create( getCandidateDescriptor(), getConstraintSystem()!!, valueArgumentsCheckingResult.argumentTypes, receiverType, context.expectedType) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java index 9246854e85d..f0a2dadebb3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java @@ -17,12 +17,9 @@ package org.jetbrains.jet.lang.resolve.calls; import com.google.common.collect.Lists; -import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; -import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext; import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintPosition; import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystem; import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver; @@ -139,14 +136,14 @@ public class CallResolverUtil { public static boolean isInvokeCallOnVariable(@NotNull Call call) { if (call.getCallType() != Call.CallType.INVOKE) return false; - ReceiverValue thisObject = call.getThisObject(); - //calleeExpressionAsThisObject for invoke is always ExpressionReceiver, see CallForImplicitInvoke - JetExpression expression = ((ExpressionReceiver) thisObject).getExpression(); + ReceiverValue dispatchReceiver = call.getDispatchReceiver(); + //calleeExpressionAsDispatchReceiver for invoke is always ExpressionReceiver, see CallForImplicitInvoke + JetExpression expression = ((ExpressionReceiver) dispatchReceiver).getExpression(); return expression instanceof JetSimpleNameExpression; } public static boolean isInvokeCallOnExpressionWithBothReceivers(@NotNull Call call) { if (call.getCallType() != Call.CallType.INVOKE || isInvokeCallOnVariable(call)) return false; - return call.getExplicitReceiver().exists() && call.getThisObject().exists(); + return call.getExplicitReceiver().exists() && call.getDispatchReceiver().exists(); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java index 9ebfd4f4b30..3ef59d6316d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java @@ -103,7 +103,7 @@ public class CallTransformer { assert candidate.getDescriptor() instanceof VariableDescriptor; - boolean hasReceiver = candidate.getReceiverArgument().exists(); + boolean hasReceiver = candidate.getExtensionReceiver().exists(); Call variableCall = stripCallArguments(task.call); ResolutionCandidate variableCandidate = getVariableCallCandidate(candidate, variableCall); if (!hasReceiver) { @@ -118,7 +118,7 @@ public class CallTransformer { ResolutionCandidate candidateWithoutReceiver = ResolutionCandidate.create( variableCandidate.getCall(), variableCandidate.getDescriptor(), - variableCandidate.getThisObject(), + variableCandidate.getDispatchReceiver(), ReceiverValue.NO_RECEIVER, ExplicitReceiverKind.NO_EXPLICIT_RECEIVER, false); @@ -145,8 +145,8 @@ public class CallTransformer { return ResolutionCandidate.create( variableCall, candidate.getDescriptor(), - candidate.getThisObject(), - candidate.getReceiverArgument(), + candidate.getDispatchReceiver(), + candidate.getExtensionReceiver(), candidate.getExplicitReceiverKind(), candidate.isSafeCall()); } @@ -252,18 +252,18 @@ public class CallTransformer { public static class CallForImplicitInvoke extends DelegatingCall { final Call outerCall; final ReceiverValue explicitExtensionReceiver; - final ExpressionReceiver calleeExpressionAsThisObject; + final ExpressionReceiver calleeExpressionAsDispatchReceiver; final JetSimpleNameExpression fakeInvokeExpression; public CallForImplicitInvoke( @NotNull ReceiverValue explicitExtensionReceiver, - @NotNull ExpressionReceiver calleeExpressionAsThisObject, + @NotNull ExpressionReceiver calleeExpressionAsDispatchReceiver, @NotNull Call call ) { super(call); this.outerCall = call; this.explicitExtensionReceiver = explicitExtensionReceiver; - this.calleeExpressionAsThisObject = calleeExpressionAsThisObject; + this.calleeExpressionAsDispatchReceiver = calleeExpressionAsDispatchReceiver; this.fakeInvokeExpression = (JetSimpleNameExpression) JetPsiFactory(call.getCallElement()).createExpression( "invoke"); } @@ -275,8 +275,8 @@ public class CallTransformer { @NotNull @Override - public ExpressionReceiver getThisObject() { - return calleeExpressionAsThisObject; + public ExpressionReceiver getDispatchReceiver() { + return calleeExpressionAsDispatchReceiver; } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java index 2f819366919..0ff9abbabed 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java @@ -117,7 +117,7 @@ public class CandidateResolver { } } } - if (!checkThisObject(context)) { + if (!checkDispatchReceiver(context)) { candidateCall.addStatus(OTHER_ERROR); } @@ -168,18 +168,18 @@ public class CandidateResolver { // 'super' cannot be passed as an argument, for receiver arguments expression typer does not track this // See TaskPrioritizer for more - JetSuperExpression superExpression = TaskPrioritizer.getReceiverSuper(candidateCall.getReceiverArgument()); + JetSuperExpression superExpression = TaskPrioritizer.getReceiverSuper(candidateCall.getExtensionReceiver()); if (superExpression != null) { context.trace.report(SUPER_IS_NOT_AN_EXPRESSION.on(superExpression, superExpression.getText())); candidateCall.addStatus(OTHER_ERROR); } } - private static boolean checkThisObject(@NotNull CallCandidateResolutionContext context) { + private static boolean checkDispatchReceiver(@NotNull CallCandidateResolutionContext context) { MutableResolvedCall candidateCall = context.candidateCall; CallableDescriptor candidateDescriptor = candidateCall.getCandidateDescriptor(); - ReceiverValue thisObject = candidateCall.getThisObject(); - if (thisObject.exists()) { + ReceiverValue dispatchReceiver = candidateCall.getDispatchReceiver(); + if (dispatchReceiver.exists()) { ClassDescriptor nestedClass = null; if (candidateDescriptor instanceof ConstructorDescriptor && DescriptorUtils.isStaticNestedClass(candidateDescriptor.getContainingDeclaration())) { @@ -194,7 +194,7 @@ public class CandidateResolver { } } - assert (thisObject.exists() == (candidateCall.getResultingDescriptor().getExpectedThisObject() != null)) + assert (dispatchReceiver.exists() == (candidateCall.getResultingDescriptor().getDispatchReceiverParameter() != null)) : "Shouldn't happen because of TaskPrioritizer: " + candidateDescriptor; return true; @@ -202,7 +202,7 @@ public class CandidateResolver { private static boolean checkOuterClassMemberIsAccessible(@NotNull CallCandidateResolutionContext context) { // In "this@Outer.foo()" the error will be reported on "this@Outer" instead - if (context.call.getExplicitReceiver().exists() || context.call.getThisObject().exists()) return true; + if (context.call.getExplicitReceiver().exists() || context.call.getDispatchReceiver().exists()) return true; ClassDescriptor candidateThis = getDeclaringClass(context.candidateCall.getCandidateDescriptor()); if (candidateThis == null || candidateThis.getKind().isSingleton()) return true; @@ -212,7 +212,7 @@ public class CandidateResolver { @Nullable private static ClassDescriptor getDeclaringClass(@NotNull CallableDescriptor candidate) { - ReceiverParameterDescriptor expectedThis = candidate.getExpectedThisObject(); + ReceiverParameterDescriptor expectedThis = candidate.getDispatchReceiverParameter(); if (expectedThis == null) return null; DeclarationDescriptor descriptor = expectedThis.getContainingDeclaration(); return descriptor instanceof ClassDescriptor ? (ClassDescriptor) descriptor : null; @@ -338,8 +338,8 @@ public class CandidateResolver { // Receiver // Error is already reported if something is missing - ReceiverValue receiverArgument = candidateCall.getReceiverArgument(); - ReceiverParameterDescriptor receiverParameter = candidateWithFreshVariables.getReceiverParameter(); + ReceiverValue receiverArgument = candidateCall.getExtensionReceiver(); + ReceiverParameterDescriptor receiverParameter = candidateWithFreshVariables.getExtensionReceiverParameter(); if (receiverArgument.exists() && receiverParameter != null) { JetType receiverType = context.candidateCall.isSafeCall() @@ -452,13 +452,13 @@ public class CandidateResolver { resultStatus = resultStatus.combine(checkReceiver( context, candidateCall, trace, - candidateCall.getResultingDescriptor().getReceiverParameter(), - candidateCall.getReceiverArgument(), candidateCall.getExplicitReceiverKind().isReceiver(), false)); + candidateCall.getResultingDescriptor().getExtensionReceiverParameter(), + candidateCall.getExtensionReceiver(), candidateCall.getExplicitReceiverKind().isExtensionReceiver(), false)); resultStatus = resultStatus.combine(checkReceiver( context, candidateCall, trace, - candidateCall.getResultingDescriptor().getExpectedThisObject(), candidateCall.getThisObject(), - candidateCall.getExplicitReceiverKind().isThisObject(), + candidateCall.getResultingDescriptor().getDispatchReceiverParameter(), candidateCall.getDispatchReceiver(), + candidateCall.getExplicitReceiverKind().isDispatchReceiver(), // for the invocation 'foo(1)' where foo is a variable of function type we should mark 'foo' if there is unsafe call error context.call instanceof CallForImplicitInvoke)); return resultStatus; @@ -545,15 +545,15 @@ public class CandidateResolver { MutableResolvedCall candidateCall = context.candidateCall; D candidateDescriptor = candidateCall.getCandidateDescriptor(); - ReceiverParameterDescriptor receiverDescriptor = candidateDescriptor.getReceiverParameter(); - ReceiverParameterDescriptor expectedThisObjectDescriptor = candidateDescriptor.getExpectedThisObject(); + ReceiverParameterDescriptor extensionReceiver = candidateDescriptor.getExtensionReceiverParameter(); + ReceiverParameterDescriptor dispatchReceiver = candidateDescriptor.getDispatchReceiverParameter(); ResolutionStatus status = SUCCESS; // For the expressions like '42.(f)()' where f: String.() -> Unit we'd like to generate a type mismatch error on '1', // not to throw away the candidate, so the following check is skipped. if (!CallResolverUtil.isInvokeCallOnExpressionWithBothReceivers(context.call)) { - status = status.combine(checkReceiverTypeError(context, receiverDescriptor, candidateCall.getReceiverArgument())); + status = status.combine(checkReceiverTypeError(context, extensionReceiver, candidateCall.getExtensionReceiver())); } - status = status.combine(checkReceiverTypeError(context, expectedThisObjectDescriptor, candidateCall.getThisObject())); + status = status.combine(checkReceiverTypeError(context, dispatchReceiver, candidateCall.getDispatchReceiver())); return status; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java index eec721e67d7..9d945f9d047 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java @@ -66,7 +66,7 @@ public class InlineCallResolverExtension implements CallResolverExtension { } //add extension receiver as inlinable - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = descriptor.getExtensionReceiverParameter(); if (receiverParameter != null) { if (isInlinableParameter(receiverParameter)) { inlinableParameters.add(receiverParameter); @@ -83,8 +83,8 @@ public class InlineCallResolverExtension implements CallResolverExtension { //checking that only invoke or inlinable extension called on function parameter CallableDescriptor targetDescriptor = resolvedCall.getResultingDescriptor(); - checkCallWithReceiver(context, targetDescriptor, resolvedCall.getThisObject(), expression); - checkCallWithReceiver(context, targetDescriptor, resolvedCall.getReceiverArgument(), expression); + checkCallWithReceiver(context, targetDescriptor, resolvedCall.getDispatchReceiver(), expression); + checkCallWithReceiver(context, targetDescriptor, resolvedCall.getExtensionReceiver(), expression); if (inlinableParameters.contains(targetDescriptor)) { if (!isInsideCall(expression)) { @@ -167,7 +167,7 @@ public class InlineCallResolverExtension implements CallResolverExtension { ExtensionReceiver extensionReceiver = (ExtensionReceiver) receiver; CallableDescriptor extension = extensionReceiver.getDeclarationDescriptor(); - varDescriptor = extension.getReceiverParameter(); + varDescriptor = extension.getExtensionReceiverParameter(); assert varDescriptor != null : "Extension should have receiverParameterDescriptor: " + extension; receiverExpression = expression; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java index 2c1666e2fa4..3cdd7b6cef9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java @@ -269,8 +269,8 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap private void checkReceiverArgument() { D candidate = candidateCall.getCandidateDescriptor(); - ReceiverParameterDescriptor receiverParameter = candidate.getReceiverParameter(); - ReceiverValue receiverArgument = candidateCall.getReceiverArgument(); + ReceiverParameterDescriptor receiverParameter = candidate.getExtensionReceiverParameter(); + ReceiverValue receiverArgument = candidateCall.getExtensionReceiver(); if (receiverParameter != null &&!receiverArgument.exists()) { tracing.missingReceiver(candidateCall.getTrace(), receiverParameter); setStatus(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java index b34f7ca9833..5210bad6298 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java @@ -23,7 +23,6 @@ import org.jetbrains.jet.JetNodeTypes; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; -import org.jetbrains.jet.lang.resolve.JetModuleUtil; import org.jetbrains.jet.lang.resolve.calls.callUtil.CallUtilPackage; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.scopes.receivers.*; @@ -173,7 +172,7 @@ public class DataFlowValueFactory { // assert resolvedCall != null : "Cannot create right identifier info if the resolved call is not known yet for " + declarationDescriptor; IdentifierInfo receiverInfo = - resolvedCall != null ? getIdForImplicitReceiver(resolvedCall.getThisObject(), simpleNameExpression) : null; + resolvedCall != null ? getIdForImplicitReceiver(resolvedCall.getDispatchReceiver(), simpleNameExpression) : null; VariableDescriptor variableDescriptor = (VariableDescriptor) declarationDescriptor; return combineInfo(receiverInfo, createInfo(variableDescriptor, isStableVariable(variableDescriptor))); @@ -200,7 +199,7 @@ public class DataFlowValueFactory { @NotNull private static IdentifierInfo getIdForThisReceiver(@Nullable DeclarationDescriptor descriptorOfThisReceiver) { if (descriptorOfThisReceiver instanceof CallableDescriptor) { - ReceiverParameterDescriptor receiverParameter = ((CallableDescriptor) descriptorOfThisReceiver).getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = ((CallableDescriptor) descriptorOfThisReceiver).getExtensionReceiverParameter(); assert receiverParameter != null : "'This' refers to the callable member without a receiver parameter: " + descriptorOfThisReceiver; return createInfo(receiverParameter.getValue(), true); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/DelegatingResolvedCall.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/DelegatingResolvedCall.java index 281b5ffad8a..55ecd0f97ac 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/DelegatingResolvedCall.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/DelegatingResolvedCall.java @@ -57,14 +57,14 @@ public abstract class DelegatingResolvedCall imple @NotNull @Override - public ReceiverValue getReceiverArgument() { - return resolvedCall.getReceiverArgument(); + public ReceiverValue getExtensionReceiver() { + return resolvedCall.getExtensionReceiver(); } @NotNull @Override - public ReceiverValue getThisObject() { - return resolvedCall.getThisObject(); + public ReceiverValue getDispatchReceiver() { + return resolvedCall.getDispatchReceiver(); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCall.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCall.java index e3495b98cbe..31427ba290c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCall.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCall.java @@ -45,11 +45,11 @@ public interface ResolvedCall { /** If the target was an extension function or property, this is the value for its receiver parameter */ @NotNull - ReceiverValue getReceiverArgument(); + ReceiverValue getExtensionReceiver(); /** If the target was a member of a class, this is the object of that class to call it on */ @NotNull - ReceiverValue getThisObject(); + ReceiverValue getDispatchReceiver(); /** Determines whether receiver argument or this object is substituted for explicit receiver */ @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java index ce18c818c54..2a6c6628962 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java @@ -71,8 +71,8 @@ public class ResolvedCallImpl implements MutableRe private final Call call; private final D candidateDescriptor; private D resultingDescriptor; // Probably substituted - private final ReceiverValue thisObject; // receiver object of a method - private final ReceiverValue receiverArgument; // receiver of an extension function + private final ReceiverValue dispatchReceiver; // receiver object of a method + private final ReceiverValue extensionReceiver; // receiver of an extension function private final ExplicitReceiverKind explicitReceiverKind; private final boolean isSafeCall; @@ -96,8 +96,8 @@ public class ResolvedCallImpl implements MutableRe ) { this.call = candidate.getCall(); this.candidateDescriptor = candidate.getDescriptor(); - this.thisObject = candidate.getThisObject(); - this.receiverArgument = candidate.getReceiverArgument(); + this.dispatchReceiver = candidate.getDispatchReceiver(); + this.extensionReceiver = candidate.getExtensionReceiver(); this.explicitReceiverKind = candidate.getExplicitReceiverKind(); this.isSafeCall = candidate.isSafeCall(); this.trace = trace; @@ -212,14 +212,14 @@ public class ResolvedCallImpl implements MutableRe @Override @NotNull - public ReceiverValue getReceiverArgument() { - return receiverArgument; + public ReceiverValue getExtensionReceiver() { + return extensionReceiver; } @Override @NotNull - public ReceiverValue getThisObject() { - return thisObject; + public ReceiverValue getDispatchReceiver() { + return dispatchReceiver; } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java index ab5a4ca37f7..4b2f077a496 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java @@ -139,8 +139,8 @@ public class OverloadingConflictResolver { if (OverrideResolver.overrides(f, g)) return true; if (OverrideResolver.overrides(g, f)) return false; - ReceiverParameterDescriptor receiverOfF = f.getReceiverParameter(); - ReceiverParameterDescriptor receiverOfG = g.getReceiverParameter(); + ReceiverParameterDescriptor receiverOfF = f.getExtensionReceiverParameter(); + ReceiverParameterDescriptor receiverOfG = g.getExtensionReceiverParameter(); if (receiverOfF != null && receiverOfG != null) { if (!typeMoreSpecific(receiverOfF.getType(), receiverOfG.getType())) return false; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/CallableDescriptorCollectors.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/CallableDescriptorCollectors.java index bf14134f706..146eb81cd71 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/CallableDescriptorCollectors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/CallableDescriptorCollectors.java @@ -30,7 +30,6 @@ import org.jetbrains.jet.lang.types.JetType; import java.util.*; import static org.jetbrains.jet.lang.resolve.LibrarySourceHacks.filterOutMembersFromLibrarySource; -import static org.jetbrains.jet.lang.resolve.descriptorUtil.DescriptorUtilPackage.getClassObjectReferenceTarget; @SuppressWarnings("unchecked") public class CallableDescriptorCollectors implements Iterable> { @@ -57,7 +56,7 @@ public class CallableDescriptorCollectors implemen public Collection getNonExtensionsByName(JetScope scope, Name name, @NotNull BindingTrace bindingTrace) { Set functions = Sets.newLinkedHashSet(); for (FunctionDescriptor function : scope.getFunctions(name)) { - if (function.getReceiverParameter() == null) { + if (function.getExtensionReceiverParameter() == null) { functions.add(function); } } @@ -118,7 +117,7 @@ public class CallableDescriptorCollectors implemen Set variables = Sets.newLinkedHashSet(); for (VariableDescriptor variable : scope.getProperties(name)) { - if (variable.getReceiverParameter() == null) { + if (variable.getExtensionReceiverParameter() == null) { variables.add(variable); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ExplicitReceiverKind.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ExplicitReceiverKind.java index e6e6ac90c38..c1d018ffa37 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ExplicitReceiverKind.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ExplicitReceiverKind.java @@ -17,20 +17,20 @@ package org.jetbrains.jet.lang.resolve.calls.tasks; public enum ExplicitReceiverKind { - RECEIVER_ARGUMENT, - THIS_OBJECT, + EXTENSION_RECEIVER, + DISPATCH_RECEIVER, NO_EXPLICIT_RECEIVER, // A very special case. // In a call 'b.foo(1)' where class 'Foo' has an extension member 'fun B.invoke(Int)' function 'invoke' has two explicit receivers: - // 'b' (as receiver argument) and 'foo' (as this object). + // 'b' (as extension receiver) and 'foo' (as dispatch receiver). BOTH_RECEIVERS; - public boolean isReceiver() { - return this == RECEIVER_ARGUMENT || this == BOTH_RECEIVERS; + public boolean isExtensionReceiver() { + return this == EXTENSION_RECEIVER || this == BOTH_RECEIVERS; } - public boolean isThisObject() { - return this == THIS_OBJECT || this == BOTH_RECEIVERS; + public boolean isDispatchReceiver() { + return this == DISPATCH_RECEIVER || this == BOTH_RECEIVERS; } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionCandidate.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionCandidate.java index 4d1c0cc9579..904217f17e1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionCandidate.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionCandidate.java @@ -31,19 +31,19 @@ import static org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue.NO_R public class ResolutionCandidate { private final Call call; private final D candidateDescriptor; - private ReceiverValue thisObject; // receiver object of a method - private ReceiverValue receiverArgument; // receiver of an extension function + private ReceiverValue dispatchReceiver; // receiver object of a method + private ReceiverValue extensionReceiver; // receiver of an extension function private ExplicitReceiverKind explicitReceiverKind; private Boolean isSafeCall; private ResolutionCandidate( - @NotNull Call call, @NotNull D descriptor, @NotNull ReceiverValue thisObject, - @NotNull ReceiverValue receiverArgument, @NotNull ExplicitReceiverKind explicitReceiverKind, @Nullable Boolean isSafeCall + @NotNull Call call, @NotNull D descriptor, @NotNull ReceiverValue dispatchReceiver, + @NotNull ReceiverValue extensionReceiver, @NotNull ExplicitReceiverKind explicitReceiverKind, @Nullable Boolean isSafeCall ) { this.call = call; this.candidateDescriptor = descriptor; - this.thisObject = thisObject; - this.receiverArgument = receiverArgument; + this.dispatchReceiver = dispatchReceiver; + this.extensionReceiver = extensionReceiver; this.explicitReceiverKind = explicitReceiverKind; this.isSafeCall = isSafeCall; } @@ -60,18 +60,18 @@ public class ResolutionCandidate { } public static ResolutionCandidate create( - @NotNull Call call, @NotNull D descriptor, @NotNull ReceiverValue thisObject, + @NotNull Call call, @NotNull D descriptor, @NotNull ReceiverValue dispatchReceiver, @NotNull ReceiverValue receiverArgument, @NotNull ExplicitReceiverKind explicitReceiverKind, boolean isSafeCall ) { - return new ResolutionCandidate(call, descriptor, thisObject, receiverArgument, explicitReceiverKind, isSafeCall); + return new ResolutionCandidate(call, descriptor, dispatchReceiver, receiverArgument, explicitReceiverKind, isSafeCall); } - public void setThisObject(@NotNull ReceiverValue thisObject) { - this.thisObject = thisObject; + public void setDispatchReceiver(@NotNull ReceiverValue dispatchReceiver) { + this.dispatchReceiver = dispatchReceiver; } - public void setReceiverArgument(@NotNull ReceiverValue receiverArgument) { - this.receiverArgument = receiverArgument; + public void setExtensionReceiver(@NotNull ReceiverValue extensionReceiver) { + this.extensionReceiver = extensionReceiver; } public void setExplicitReceiverKind(@NotNull ExplicitReceiverKind explicitReceiverKind) { @@ -89,13 +89,13 @@ public class ResolutionCandidate { } @NotNull - public ReceiverValue getThisObject() { - return thisObject; + public ReceiverValue getDispatchReceiver() { + return dispatchReceiver; } @NotNull - public ReceiverValue getReceiverArgument() { - return receiverArgument; + public ReceiverValue getExtensionReceiver() { + return extensionReceiver; } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java index bd815ac118e..66c5dab76c6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java @@ -109,7 +109,7 @@ public class TaskPrioritizer { ) { ProgressIndicatorProvider.checkCanceled(); - boolean resolveInvoke = c.context.call.getThisObject().exists(); + boolean resolveInvoke = c.context.call.getDispatchReceiver().exists(); if (resolveInvoke) { addCandidatesForInvoke(receiver, c); return; @@ -138,7 +138,7 @@ public class TaskPrioritizer { Collection membersForThisVariant = callableDescriptorCollector.getMembersByName(type, c.name, c.context.trace); convertWithReceivers(membersForThisVariant, explicitReceiver, - NO_RECEIVER, members, createKind(THIS_OBJECT, isExplicit), c.context.call); + NO_RECEIVER, members, createKind(DISPATCH_RECEIVER, isExplicit), c.context.call); } c.result.addCandidates(members); } @@ -147,12 +147,12 @@ public class TaskPrioritizer { //member extensions for (ReceiverValue implicitReceiver : implicitReceivers) { addMemberExtensionCandidates(implicitReceiver, explicitReceiver, - callableDescriptorCollector, c, createKind(RECEIVER_ARGUMENT, isExplicit)); + callableDescriptorCollector, c, createKind(EXTENSION_RECEIVER, isExplicit)); } //extensions Collection> extensions = convertWithImpliedThis( c.scope, explicitReceiver, callableDescriptorCollector.getNonMembersByName(c.scope, c.name, c.context.trace), - createKind(RECEIVER_ARGUMENT, isExplicit), c.context.call); + createKind(EXTENSION_RECEIVER, isExplicit), c.context.call); c.result.addCandidates(extensions); } } @@ -163,15 +163,15 @@ public class TaskPrioritizer { } private static void addMemberExtensionCandidates( - @NotNull ReceiverValue thisObject, + @NotNull ReceiverValue dispatchReceiver, @NotNull ReceiverValue receiverParameter, @NotNull CallableDescriptorCollector callableDescriptorCollector, TaskPrioritizerContext c, @NotNull ExplicitReceiverKind receiverKind ) { Collection memberExtensions = callableDescriptorCollector.getNonMembersByName( - thisObject.getType().getMemberScope(), c.name, c.context.trace); + dispatchReceiver.getType().getMemberScope(), c.name, c.context.trace); c.result.addCandidates(convertWithReceivers( - memberExtensions, thisObject, receiverParameter, receiverKind, c.context.call)); + memberExtensions, dispatchReceiver, receiverParameter, receiverKind, c.context.call)); } private static void addCandidatesForNoReceiver( @@ -214,7 +214,7 @@ public class TaskPrioritizer { // For 'a.foo()' where foo has function type, // a is explicitReceiver, foo is variableReceiver. - ReceiverValue variableReceiver = c.context.call.getThisObject(); + ReceiverValue variableReceiver = c.context.call.getDispatchReceiver(); assert variableReceiver.exists() : "'Invoke' call hasn't got variable receiver"; // For invocation a.foo() explicit receiver 'a' @@ -239,45 +239,45 @@ public class TaskPrioritizer { } // with (a) { foo() } for (ReceiverValue implicitReceiver : implicitReceivers) { - addCandidatesWhenInvokeIsMemberAndExtensionToExplicitReceiver(variableReceiver, implicitReceiver, c, THIS_OBJECT); + addCandidatesWhenInvokeIsMemberAndExtensionToExplicitReceiver(variableReceiver, implicitReceiver, c, DISPATCH_RECEIVER); } } private static void addCandidatesWhenInvokeIsMemberAndExtensionToExplicitReceiver( - @NotNull ReceiverValue thisObject, + @NotNull ReceiverValue dispatchReceiver, @NotNull ReceiverValue receiverParameter, @NotNull TaskPrioritizerContext c, @NotNull ExplicitReceiverKind receiverKind ) { for (CallableDescriptorCollector callableDescriptorCollector : c.callableDescriptorCollectors) { - addMemberExtensionCandidates(thisObject, receiverParameter, callableDescriptorCollector, c, receiverKind); + addMemberExtensionCandidates(dispatchReceiver, receiverParameter, callableDescriptorCollector, c, receiverKind); } } private static Collection> convertWithReceivers( @NotNull Collection descriptors, - @NotNull ReceiverValue thisObject, - @NotNull ReceiverValue receiverParameter, + @NotNull ReceiverValue dispatchReceiver, + @NotNull ReceiverValue extensionReceiver, @NotNull ExplicitReceiverKind explicitReceiverKind, @NotNull Call call ) { Collection> result = Lists.newArrayList(); - convertWithReceivers(descriptors, thisObject, receiverParameter, result, explicitReceiverKind, call); + convertWithReceivers(descriptors, dispatchReceiver, extensionReceiver, result, explicitReceiverKind, call); return result; } private static void convertWithReceivers( @NotNull Collection descriptors, - @NotNull ReceiverValue thisObject, - @NotNull ReceiverValue receiverParameter, + @NotNull ReceiverValue dispatchReceiver, + @NotNull ReceiverValue extensionReceiver, @NotNull Collection> result, @NotNull ExplicitReceiverKind explicitReceiverKind, @NotNull Call call ) { for (D descriptor : descriptors) { ResolutionCandidate candidate = ResolutionCandidate.create(call, descriptor); - candidate.setThisObject(thisObject); - candidate.setReceiverArgument(receiverParameter); + candidate.setDispatchReceiver(dispatchReceiver); + candidate.setExtensionReceiver(extensionReceiver); candidate.setExplicitReceiverKind(explicitReceiverKind); result.add(candidate); } @@ -301,7 +301,7 @@ public class TaskPrioritizer { Collection> result = Lists.newArrayList(); for (D descriptor : descriptors) { ResolutionCandidate candidate = ResolutionCandidate.create(call, descriptor); - candidate.setReceiverArgument(receiverParameter); + candidate.setExtensionReceiver(receiverParameter); candidate.setExplicitReceiverKind(receiverKind); if (setImpliedThis(scope, candidate)) { result.add(candidate); @@ -314,13 +314,13 @@ public class TaskPrioritizer { @NotNull JetScope scope, @NotNull ResolutionCandidate candidate ) { - ReceiverParameterDescriptor expectedThisObject = candidate.getDescriptor().getExpectedThisObject(); - if (expectedThisObject == null) return true; + ReceiverParameterDescriptor dispatchReceiver = candidate.getDescriptor().getDispatchReceiverParameter(); + if (dispatchReceiver == null) return true; List receivers = scope.getImplicitReceiversHierarchy(); for (ReceiverParameterDescriptor receiver : receivers) { - if (JetTypeChecker.DEFAULT.isSubtypeOf(receiver.getType(), expectedThisObject.getType())) { + if (JetTypeChecker.DEFAULT.isSubtypeOf(receiver.getType(), dispatchReceiver.getType())) { // TODO : Autocasts & nullability - candidate.setThisObject(expectedThisObject.getValue()); + candidate.setDispatchReceiver(dispatchReceiver.getValue()); return true; } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/CallMaker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/CallMaker.java index f4c45bf53ce..37ebfd7f267 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/CallMaker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/CallMaker.java @@ -134,7 +134,7 @@ public class CallMaker { @NotNull @Override - public ReceiverValue getThisObject() { + public ReceiverValue getDispatchReceiver() { return ReceiverValue.NO_RECEIVER; } @@ -277,7 +277,7 @@ public class CallMaker { @NotNull @Override - public ReceiverValue getThisObject() { + public ReceiverValue getDispatchReceiver() { return ReceiverValue.NO_RECEIVER; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/DelegatingCall.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/DelegatingCall.java index 5e4c5dd0c07..c1a2b0584a8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/DelegatingCall.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/DelegatingCall.java @@ -46,8 +46,8 @@ public class DelegatingCall implements Call { @NotNull @Override - public ReceiverValue getThisObject() { - return delegate.getThisObject(); + public ReceiverValue getDispatchReceiver() { + return delegate.getDispatchReceiver(); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/FakeCallableDescriptorForObject.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/FakeCallableDescriptorForObject.kt index 391e98f4f1f..4798416debe 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/FakeCallableDescriptorForObject.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/util/FakeCallableDescriptorForObject.kt @@ -43,9 +43,9 @@ public class FakeCallableDescriptorForObject( public fun getReferencedDescriptor(): ClassDescriptor = classDescriptor.getClassObjectReferenceTarget() - override fun getReceiverParameter(): ReceiverParameterDescriptor? = null + override fun getExtensionReceiverParameter(): ReceiverParameterDescriptor? = null - override fun getExpectedThisObject(): ReceiverParameterDescriptor? = null + override fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? = null override fun getTypeParameters(): List = Collections.emptyList() diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java index 9a5ca3f0d26..8659597c6d2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java @@ -121,7 +121,7 @@ public class InlineAnalyzerExtension implements FunctionAnalyzerExtension.Analyz for (ValueParameterDescriptor parameter : parameters) { hasInlinable |= checkInlinableParameter(parameter, function.getValueParameters().get(index++), functionDescriptor, trace); } - ReceiverParameterDescriptor receiverParameter = functionDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = functionDescriptor.getExtensionReceiverParameter(); if (receiverParameter != null) { JetTypeReference receiver = function.getReceiverTypeRef(); assert receiver != null : "Descriptor has a receiver but psi doesn't " + function.getText(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java index 4156794b958..152262bde21 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java @@ -64,7 +64,7 @@ public final class JetScopeUtils { for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) { if (descriptor instanceof CallableDescriptor) { CallableDescriptor callDescriptor = (CallableDescriptor) descriptor; - if (callDescriptor.getReceiverParameter() != null) { + if (callDescriptor.getExtensionReceiverParameter() != null) { result.add(callDescriptor); } } @@ -81,7 +81,7 @@ public final class JetScopeUtils { JetScope propertyDeclarationInnerScope = getPropertyDeclarationInnerScope(propertyDescriptor, parentScope, propertyDescriptor.getTypeParameters(), - propertyDescriptor.getReceiverParameter(), trace); + propertyDescriptor.getExtensionReceiverParameter(), trace); WritableScope accessorScope = new WritableScopeImpl(propertyDeclarationInnerScope, parentScope.getContainingDeclaration(), new TraceBasedRedeclarationHandler(trace), "Accessor Scope"); accessorScope.changeLockLevel(WritableScope.LockLevel.READING); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java index d95f411c886..86cbc3f93a0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java @@ -210,7 +210,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { checkForPropertyRedeclaration(name, variableDescriptor); getPropertyGroups().put(name, variableDescriptor); } - if (variableDescriptor.getReceiverParameter() == null) { + if (variableDescriptor.getExtensionReceiverParameter() == null) { checkForRedeclaration(name, variableDescriptor); // TODO : Should this always happen? getVariableOrClassDescriptors().put(name, variableDescriptor); @@ -347,9 +347,9 @@ public class WritableScopeImpl extends WritableScopeWithImports { private void checkForPropertyRedeclaration(@NotNull Name name, VariableDescriptor variableDescriptor) { Set properties = getPropertyGroups().get(name); - ReceiverParameterDescriptor receiverParameter = variableDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = variableDescriptor.getExtensionReceiverParameter(); for (VariableDescriptor oldProperty : properties) { - ReceiverParameterDescriptor receiverParameterForOldVariable = oldProperty.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameterForOldVariable = oldProperty.getExtensionReceiverParameter(); if (((receiverParameter != null && receiverParameterForOldVariable != null) && (JetTypeChecker.DEFAULT.equalTypes(receiverParameter.getType(), receiverParameterForOldVariable.getType())))) { redeclarationHandler.handleRedeclaration(oldProperty, variableDescriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index 7600f70fa6a..4adc6246edf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -481,21 +481,21 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { } if (descriptor == null) return null; - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); - ReceiverParameterDescriptor expectedThisObject = descriptor.getExpectedThisObject(); - if (receiverParameter != null && expectedThisObject != null && descriptor instanceof CallableMemberDescriptor) { + ReceiverParameterDescriptor extensionReceiver = descriptor.getExtensionReceiverParameter(); + ReceiverParameterDescriptor dispatchReceiver = descriptor.getDispatchReceiverParameter(); + if (extensionReceiver != null && dispatchReceiver != null && descriptor instanceof CallableMemberDescriptor) { context.trace.report(EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED.on(reference, (CallableMemberDescriptor) descriptor)); return null; } JetType receiverType = null; - if (receiverParameter != null) { - receiverType = receiverParameter.getType(); + if (extensionReceiver != null) { + receiverType = extensionReceiver.getType(); } - else if (expectedThisObject != null) { - receiverType = expectedThisObject.getType(); + else if (dispatchReceiver != null) { + receiverType = dispatchReceiver.getType(); } - boolean isExtension = receiverParameter != null; + boolean isExtension = extensionReceiver != null; if (descriptor instanceof FunctionDescriptor) { return createFunctionReferenceType(expression, context, (FunctionDescriptor) descriptor, receiverType, isExtension); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java index 7b66ff094d8..f087495f49c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java @@ -111,7 +111,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { JetType safeReturnType = computeReturnType(expression, context, functionDescriptor, functionTypeExpected); functionDescriptor.setReturnType(safeReturnType); - JetType receiver = DescriptorUtils.getReceiverParameterType(functionDescriptor.getReceiverParameter()); + JetType receiver = DescriptorUtils.getReceiverParameterType(functionDescriptor.getExtensionReceiverParameter()); List valueParametersTypes = ExpressionTypingUtils.getValueParametersTypes(functionDescriptor.getValueParameters()); JetType resultType = KotlinBuiltIns.getInstance().getFunctionType( Annotations.EMPTY, receiver, valueParametersTypes, safeReturnType); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java index 410cbc2e354..faa25653e19 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java @@ -186,7 +186,7 @@ public class ControlStructureTypingUtils { @NotNull @Override - public ReceiverValue getThisObject() { + public ReceiverValue getDispatchReceiver() { return ReceiverValue.NO_RECEIVER; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java index 39e15ec5b72..343f858938d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java @@ -221,7 +221,7 @@ public class ExpressionTypingUtils { @NotNull JetType receiverType, @NotNull CallableDescriptor callableDescriptor ) { - ReceiverParameterDescriptor receiverParameter = callableDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = callableDescriptor.getExtensionReceiverParameter(); if (!receiverArgument.exists() && receiverParameter == null) { // Both receivers do not exist diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java index 0eadd846114..72918d56e06 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java @@ -189,11 +189,11 @@ public class LabelResolver { } else if (declarationDescriptor instanceof FunctionDescriptor) { FunctionDescriptor functionDescriptor = (FunctionDescriptor) declarationDescriptor; - thisReceiver = functionDescriptor.getReceiverParameter(); + thisReceiver = functionDescriptor.getExtensionReceiverParameter(); } else if (declarationDescriptor instanceof PropertyDescriptor) { PropertyDescriptor propertyDescriptor = (PropertyDescriptor) declarationDescriptor; - thisReceiver = propertyDescriptor.getReceiverParameter(); + thisReceiver = propertyDescriptor.getExtensionReceiverParameter(); } else { throw new UnsupportedOperationException("Unsupported descriptor: " + declarationDescriptor); // TODO @@ -218,7 +218,7 @@ public class LabelResolver { DeclarationDescriptor declarationDescriptor = context.trace.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, element); if (declarationDescriptor instanceof FunctionDescriptor) { - ReceiverParameterDescriptor thisReceiver = ((FunctionDescriptor) declarationDescriptor).getReceiverParameter(); + ReceiverParameterDescriptor thisReceiver = ((FunctionDescriptor) declarationDescriptor).getExtensionReceiverParameter(); if (thisReceiver != null) { context.trace.record(LABEL_TARGET, targetLabel, element); context.trace.record(REFERENCE_TARGET, referenceExpression, declarationDescriptor); diff --git a/compiler/testData/resolve/candidatesPriority/receiverVsThisObject.resolve b/compiler/testData/resolve/candidatesPriority/dispatchReceiverVsExtensionReceiver.resolve similarity index 100% rename from compiler/testData/resolve/candidatesPriority/receiverVsThisObject.resolve rename to compiler/testData/resolve/candidatesPriority/dispatchReceiverVsExtensionReceiver.resolve diff --git a/compiler/testData/resolve/candidatesPriority/receiverVsThisObject2.resolve b/compiler/testData/resolve/candidatesPriority/dispatchReceiverVsExtensionReceiver2.resolve similarity index 100% rename from compiler/testData/resolve/candidatesPriority/receiverVsThisObject2.resolve rename to compiler/testData/resolve/candidatesPriority/dispatchReceiverVsExtensionReceiver2.resolve diff --git a/compiler/testData/resolvedCalls/arguments/functionLiterals/chainedLambdas.txt b/compiler/testData/resolvedCalls/arguments/functionLiterals/chainedLambdas.txt index 56452e650a6..2d7cf0de3d7 100644 --- a/compiler/testData/resolvedCalls/arguments/functionLiterals/chainedLambdas.txt +++ b/compiler/testData/resolvedCalls/arguments/functionLiterals/chainedLambdas.txt @@ -12,8 +12,8 @@ Candidate descriptor: fun foo(t: T, f: (T) -> S, g: (S) -> R): Unit de Resulting descriptor: fun foo(t: Int, f: (Int) -> String, g: (String) -> Int): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaReturnType.txt b/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaReturnType.txt index 95df33786b6..38df325b85f 100644 --- a/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaReturnType.txt +++ b/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaReturnType.txt @@ -11,8 +11,8 @@ Candidate descriptor: fun foo(f: () -> T): Unit defined in root package Resulting descriptor: fun foo(f: () -> ???): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaType.txt b/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaType.txt index ac7ac4998d8..d3f8e5cfa51 100644 --- a/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaType.txt +++ b/compiler/testData/resolvedCalls/arguments/functionLiterals/notInferredLambdaType.txt @@ -11,8 +11,8 @@ Candidate descriptor: fun foo(f: (T) -> String): Unit defined in root packag Resulting descriptor: fun foo(f: (???) -> String): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleGenericLambda.txt b/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleGenericLambda.txt index b8ed5969cef..fec973bd0e2 100644 --- a/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleGenericLambda.txt +++ b/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleGenericLambda.txt @@ -11,8 +11,8 @@ Candidate descriptor: fun foo(f: (T) -> String): Unit defined in root packag Resulting descriptor: fun foo(f: (Int) -> String): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleLambda.txt b/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleLambda.txt index 3c7db3b251c..60f32d2bc4b 100644 --- a/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleLambda.txt +++ b/compiler/testData/resolvedCalls/arguments/functionLiterals/simpleLambda.txt @@ -10,8 +10,8 @@ Resolved call: Resulting descriptor: fun foo(f: (Int) -> String): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/functionLiterals/unmappedLambda.txt b/compiler/testData/resolvedCalls/arguments/functionLiterals/unmappedLambda.txt index 7820841d111..b2d58917e5a 100644 --- a/compiler/testData/resolvedCalls/arguments/functionLiterals/unmappedLambda.txt +++ b/compiler/testData/resolvedCalls/arguments/functionLiterals/unmappedLambda.txt @@ -10,8 +10,8 @@ Resolved call: Resulting descriptor: fun foo(): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/genericCalls/inferredParameter.txt b/compiler/testData/resolvedCalls/arguments/genericCalls/inferredParameter.txt index ceb4968dd22..86f9f0299d1 100644 --- a/compiler/testData/resolvedCalls/arguments/genericCalls/inferredParameter.txt +++ b/compiler/testData/resolvedCalls/arguments/genericCalls/inferredParameter.txt @@ -13,8 +13,8 @@ Candidate descriptor: fun foo(t: T, l: List): Unit defined in root packag Resulting descriptor: fun foo(t: Comparable, l: List>): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/genericCalls/simpleGeneric.txt b/compiler/testData/resolvedCalls/arguments/genericCalls/simpleGeneric.txt index e76109c01b6..fa8c4613480 100644 --- a/compiler/testData/resolvedCalls/arguments/genericCalls/simpleGeneric.txt +++ b/compiler/testData/resolvedCalls/arguments/genericCalls/simpleGeneric.txt @@ -13,8 +13,8 @@ Candidate descriptor: fun foo(t: T): Unit defined in root package Resulting descriptor: fun foo(t: A): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameter.txt b/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameter.txt index 0daa607a209..a18e178358f 100644 --- a/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameter.txt +++ b/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameter.txt @@ -13,8 +13,8 @@ Candidate descriptor: fun foo(t: T, l: MutableList): Unit defined in root Resulting descriptor: fun foo(t: ???, l: MutableList): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameterTypeMismatch.txt b/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameterTypeMismatch.txt index b3d7b6b230c..3281f9ea27d 100644 --- a/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameterTypeMismatch.txt +++ b/compiler/testData/resolvedCalls/arguments/genericCalls/uninferredParameterTypeMismatch.txt @@ -11,8 +11,8 @@ Candidate descriptor: fun foo(l: List): Unit defined in root package Resulting descriptor: fun foo(l: List): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/namedArguments/positionedAfterNamed.txt b/compiler/testData/resolvedCalls/arguments/namedArguments/positionedAfterNamed.txt index 2fe396e1b31..7008cca0195 100644 --- a/compiler/testData/resolvedCalls/arguments/namedArguments/positionedAfterNamed.txt +++ b/compiler/testData/resolvedCalls/arguments/namedArguments/positionedAfterNamed.txt @@ -13,8 +13,8 @@ Resolved call: Resulting descriptor: fun foo(a: A, b: B): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/namedArguments/shiftedArgsMatch.txt b/compiler/testData/resolvedCalls/arguments/namedArguments/shiftedArgsMatch.txt index 3a4984fb906..f906ecdeb78 100644 --- a/compiler/testData/resolvedCalls/arguments/namedArguments/shiftedArgsMatch.txt +++ b/compiler/testData/resolvedCalls/arguments/namedArguments/shiftedArgsMatch.txt @@ -13,8 +13,8 @@ Resolved call: Resulting descriptor: fun foo(a: A, b: B): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/oneArgument/argumentHasNoType.txt b/compiler/testData/resolvedCalls/arguments/oneArgument/argumentHasNoType.txt index ce59478dbf4..61106d4fec4 100644 --- a/compiler/testData/resolvedCalls/arguments/oneArgument/argumentHasNoType.txt +++ b/compiler/testData/resolvedCalls/arguments/oneArgument/argumentHasNoType.txt @@ -12,8 +12,8 @@ Resolved call: Resulting descriptor: fun foo(a: A): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/oneArgument/simpleMatch.txt b/compiler/testData/resolvedCalls/arguments/oneArgument/simpleMatch.txt index dcac37aa34a..9c7f7b4e9dd 100644 --- a/compiler/testData/resolvedCalls/arguments/oneArgument/simpleMatch.txt +++ b/compiler/testData/resolvedCalls/arguments/oneArgument/simpleMatch.txt @@ -12,8 +12,8 @@ Resolved call: Resulting descriptor: fun foo(a: A): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/oneArgument/typeMismatch.txt b/compiler/testData/resolvedCalls/arguments/oneArgument/typeMismatch.txt index 61b993b936b..1f881faf2c8 100644 --- a/compiler/testData/resolvedCalls/arguments/oneArgument/typeMismatch.txt +++ b/compiler/testData/resolvedCalls/arguments/oneArgument/typeMismatch.txt @@ -12,8 +12,8 @@ Resolved call: Resulting descriptor: fun foo(a: A): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/oneArgument/unmappedArgument.txt b/compiler/testData/resolvedCalls/arguments/oneArgument/unmappedArgument.txt index d4c9bccdf18..5b97813df69 100644 --- a/compiler/testData/resolvedCalls/arguments/oneArgument/unmappedArgument.txt +++ b/compiler/testData/resolvedCalls/arguments/oneArgument/unmappedArgument.txt @@ -10,8 +10,8 @@ Resolved call: Resulting descriptor: fun foo(): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/realExamples/emptyList.txt b/compiler/testData/resolvedCalls/arguments/realExamples/emptyList.txt index 0931d001b06..ff0eb6aef0a 100644 --- a/compiler/testData/resolvedCalls/arguments/realExamples/emptyList.txt +++ b/compiler/testData/resolvedCalls/arguments/realExamples/emptyList.txt @@ -15,8 +15,8 @@ Candidate descriptor: fun foo(t: T): Unit defined in root package Resulting descriptor: fun foo(t: List): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/realExamples/emptyMutableList.txt b/compiler/testData/resolvedCalls/arguments/realExamples/emptyMutableList.txt index 6d606bb9552..363656eaae1 100644 --- a/compiler/testData/resolvedCalls/arguments/realExamples/emptyMutableList.txt +++ b/compiler/testData/resolvedCalls/arguments/realExamples/emptyMutableList.txt @@ -15,8 +15,8 @@ Candidate descriptor: fun foo(t: T): Unit defined in root package Resulting descriptor: fun foo(t: MutableList): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/arguments/severalCandidates/mostSpecific.txt b/compiler/testData/resolvedCalls/arguments/severalCandidates/mostSpecific.txt index faf76105df5..212ffb664e2 100644 --- a/compiler/testData/resolvedCalls/arguments/severalCandidates/mostSpecific.txt +++ b/compiler/testData/resolvedCalls/arguments/severalCandidates/mostSpecific.txt @@ -14,8 +14,8 @@ Resolved call: Resulting descriptor: fun foo(a: A, s: String): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/differentCallElements/annotationCall.txt b/compiler/testData/resolvedCalls/differentCallElements/annotationCall.txt index 8eaee8cc9b1..935da0c7163 100644 --- a/compiler/testData/resolvedCalls/differentCallElements/annotationCall.txt +++ b/compiler/testData/resolvedCalls/differentCallElements/annotationCall.txt @@ -8,8 +8,8 @@ Resolved call: Resulting descriptor: constructor MyA(i: Int) defined in MyA Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/differentCallElements/delegatorToSuperCall.txt b/compiler/testData/resolvedCalls/differentCallElements/delegatorToSuperCall.txt index b562f08552a..06825ecb980 100644 --- a/compiler/testData/resolvedCalls/differentCallElements/delegatorToSuperCall.txt +++ b/compiler/testData/resolvedCalls/differentCallElements/delegatorToSuperCall.txt @@ -8,5 +8,5 @@ Resolved call: Resulting descriptor: constructor A() defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/differentCallElements/simpleArrayAccess.txt b/compiler/testData/resolvedCalls/differentCallElements/simpleArrayAccess.txt index 0aebfb58049..a1862f96c21 100644 --- a/compiler/testData/resolvedCalls/differentCallElements/simpleArrayAccess.txt +++ b/compiler/testData/resolvedCalls/differentCallElements/simpleArrayAccess.txt @@ -7,9 +7,9 @@ Resolved call: Resulting descriptor: fun get(index: Int): Int defined in kotlin.Array -Explicit receiver kind = THIS_OBJECT -This object = array {Array} -Receiver argument = NO_RECEIVER +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = array {Array} +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/explicitReceiverIsThisObject.kt b/compiler/testData/resolvedCalls/explicitReceiverIsDispatchReceiver.kt similarity index 100% rename from compiler/testData/resolvedCalls/explicitReceiverIsThisObject.kt rename to compiler/testData/resolvedCalls/explicitReceiverIsDispatchReceiver.kt diff --git a/compiler/testData/resolvedCalls/explicitReceiverIsThisObject.txt b/compiler/testData/resolvedCalls/explicitReceiverIsDispatchReceiver.txt similarity index 57% rename from compiler/testData/resolvedCalls/explicitReceiverIsThisObject.txt rename to compiler/testData/resolvedCalls/explicitReceiverIsDispatchReceiver.txt index b1a2e8a2809..a9a8477c6e4 100644 --- a/compiler/testData/resolvedCalls/explicitReceiverIsThisObject.txt +++ b/compiler/testData/resolvedCalls/explicitReceiverIsDispatchReceiver.txt @@ -11,6 +11,6 @@ Resolved call: Resulting descriptor: fun foo(): Unit defined in A -Explicit receiver kind = THIS_OBJECT -This object = a {A} -Receiver argument = NO_RECEIVER \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = a {A} +Extension receiver = NO_RECEIVER diff --git a/compiler/testData/resolvedCalls/explicitReceiverIsReceiverArgument.kt b/compiler/testData/resolvedCalls/explicitReceiverIsExtensionReceiver.kt similarity index 100% rename from compiler/testData/resolvedCalls/explicitReceiverIsReceiverArgument.kt rename to compiler/testData/resolvedCalls/explicitReceiverIsExtensionReceiver.kt diff --git a/compiler/testData/resolvedCalls/explicitReceiverIsReceiverArgument.txt b/compiler/testData/resolvedCalls/explicitReceiverIsExtensionReceiver.txt similarity index 58% rename from compiler/testData/resolvedCalls/explicitReceiverIsReceiverArgument.txt rename to compiler/testData/resolvedCalls/explicitReceiverIsExtensionReceiver.txt index 572ab66cf31..6f31e6e3a57 100644 --- a/compiler/testData/resolvedCalls/explicitReceiverIsReceiverArgument.txt +++ b/compiler/testData/resolvedCalls/explicitReceiverIsExtensionReceiver.txt @@ -11,6 +11,6 @@ Resolved call: Resulting descriptor: fun A.foo(): Unit defined in root package -Explicit receiver kind = RECEIVER_ARGUMENT -This object = NO_RECEIVER -Receiver argument = a {A} \ No newline at end of file +Explicit receiver kind = EXTENSION_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = a {A} diff --git a/compiler/testData/resolvedCalls/functionTypes/invokeForExtensionFunctionType.txt b/compiler/testData/resolvedCalls/functionTypes/invokeForExtensionFunctionType.txt index 561e96c7e1f..de791c85a1d 100644 --- a/compiler/testData/resolvedCalls/functionTypes/invokeForExtensionFunctionType.txt +++ b/compiler/testData/resolvedCalls/functionTypes/invokeForExtensionFunctionType.txt @@ -8,5 +8,5 @@ Resolved call: Resulting descriptor: fun Int.invoke(): Unit defined in kotlin.ExtensionFunction0 Explicit receiver kind = BOTH_RECEIVERS -This object = f {ExtensionFunction0} -Receiver argument = 1 {Int} \ No newline at end of file +Dispatch receiver = f {ExtensionFunction0} +Extension receiver = 1 {Int} \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/functionTypes/invokeForFunctionType.txt b/compiler/testData/resolvedCalls/functionTypes/invokeForFunctionType.txt index 0a17b4f39b4..7b155d39a12 100644 --- a/compiler/testData/resolvedCalls/functionTypes/invokeForFunctionType.txt +++ b/compiler/testData/resolvedCalls/functionTypes/invokeForFunctionType.txt @@ -7,6 +7,6 @@ Resolved call: Resulting descriptor: fun invoke(): Unit defined in kotlin.Function0 -Explicit receiver kind = THIS_OBJECT -This object = f {Function0} -Receiver argument = NO_RECEIVER \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = f {Function0} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionType.txt b/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionType.txt index eb2aa75bd97..f0adfae18e4 100644 --- a/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionType.txt +++ b/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionType.txt @@ -12,5 +12,5 @@ Resolved call: Resulting descriptor: val foo: Int.() -> Unit defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = Class{A} -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = Class{A} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionTypeInvoke.txt b/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionTypeInvoke.txt index 8bc6ae6ef8d..2bed2789968 100644 --- a/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionTypeInvoke.txt +++ b/compiler/testData/resolvedCalls/functionTypes/valOfExtensionFunctionTypeInvoke.txt @@ -12,5 +12,5 @@ Resolved call: Resulting descriptor: fun Int.invoke(): Unit defined in kotlin.ExtensionFunction0 Explicit receiver kind = BOTH_RECEIVERS -This object = foo {ExtensionFunction0} -Receiver argument = 1 {Int} \ No newline at end of file +Dispatch receiver = foo {ExtensionFunction0} +Extension receiver = 1 {Int} \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/functionTypes/valOfFunctionType.txt b/compiler/testData/resolvedCalls/functionTypes/valOfFunctionType.txt index 6d3e0de1c89..408fe38a217 100644 --- a/compiler/testData/resolvedCalls/functionTypes/valOfFunctionType.txt +++ b/compiler/testData/resolvedCalls/functionTypes/valOfFunctionType.txt @@ -11,6 +11,6 @@ Resolved call: Resulting descriptor: val foo: (Int) -> Int defined in A -Explicit receiver kind = THIS_OBJECT -This object = a {A} -Receiver argument = NO_RECEIVER \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = a {A} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/functionTypes/valOfFunctionTypeInvoke.txt b/compiler/testData/resolvedCalls/functionTypes/valOfFunctionTypeInvoke.txt index d69063050ad..d30acd07780 100644 --- a/compiler/testData/resolvedCalls/functionTypes/valOfFunctionTypeInvoke.txt +++ b/compiler/testData/resolvedCalls/functionTypes/valOfFunctionTypeInvoke.txt @@ -11,9 +11,9 @@ Resolved call: Resulting descriptor: fun invoke(p1: Int): Int defined in kotlin.Function1 -Explicit receiver kind = THIS_OBJECT -This object = foo {Function1} -Receiver argument = NO_RECEIVER +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = foo {Function1} +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgument.kt b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceivers.kt similarity index 98% rename from compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgument.kt rename to compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceivers.kt index cb663ef615a..65af828148a 100644 --- a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgument.kt +++ b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceivers.kt @@ -8,4 +8,4 @@ fun bar(a: A, b: B) { with (a) { b.foo() } -} \ No newline at end of file +} diff --git a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgument.txt b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceivers.txt similarity index 56% rename from compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgument.txt rename to compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceivers.txt index a531b703a5a..cb2e2a42770 100644 --- a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgument.txt +++ b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceivers.txt @@ -15,6 +15,6 @@ Resolved call: Resulting descriptor: fun B.foo(): Unit defined in A -Explicit receiver kind = RECEIVER_ARGUMENT -This object = AExt{fun A.(): Unit defined in bar} -Receiver argument = b {B} \ No newline at end of file +Explicit receiver kind = EXTENSION_RECEIVER +Dispatch receiver = AExt{fun A.(): Unit defined in bar} +Extension receiver = b {B} diff --git a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.kt b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.kt similarity index 98% rename from compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.kt rename to compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.kt index 270a1d8b7e4..7c5e2390443 100644 --- a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.kt +++ b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.kt @@ -10,4 +10,4 @@ fun bar(a: A, b: B) { foo() } } -} \ No newline at end of file +} diff --git a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.txt b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.txt similarity index 63% rename from compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.txt rename to compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.txt index da37fce7f03..9394bc1338d 100644 --- a/compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.txt +++ b/compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.txt @@ -18,5 +18,5 @@ Resolved call: Resulting descriptor: fun B.foo(): Unit defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = AExt{fun A.(): Unit defined in bar} -Receiver argument = BExt{fun B.(): Unit defined in bar.} \ No newline at end of file +Dispatch receiver = AExt{fun A.(): Unit defined in bar} +Extension receiver = BExt{fun B.(): Unit defined in bar.} diff --git a/compiler/testData/resolvedCalls/implicitReceiverIsThisObject.kt b/compiler/testData/resolvedCalls/implicitReceiverIsDispatchReceiver.kt similarity index 100% rename from compiler/testData/resolvedCalls/implicitReceiverIsThisObject.kt rename to compiler/testData/resolvedCalls/implicitReceiverIsDispatchReceiver.kt diff --git a/compiler/testData/resolvedCalls/implicitReceiverIsThisObject.txt b/compiler/testData/resolvedCalls/implicitReceiverIsDispatchReceiver.txt similarity index 63% rename from compiler/testData/resolvedCalls/implicitReceiverIsThisObject.txt rename to compiler/testData/resolvedCalls/implicitReceiverIsDispatchReceiver.txt index 6ea9b8d638f..011f0359a29 100644 --- a/compiler/testData/resolvedCalls/implicitReceiverIsThisObject.txt +++ b/compiler/testData/resolvedCalls/implicitReceiverIsDispatchReceiver.txt @@ -12,5 +12,5 @@ Resolved call: Resulting descriptor: fun foo(): Unit defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = AExt{fun A.bar(): Unit defined in root package} -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = AExt{fun A.bar(): Unit defined in root package} +Extension receiver = NO_RECEIVER diff --git a/compiler/testData/resolvedCalls/implicitReceiverIsReceiverArgument.kt b/compiler/testData/resolvedCalls/implicitReceiverIsExtensionReceiver.kt similarity index 100% rename from compiler/testData/resolvedCalls/implicitReceiverIsReceiverArgument.kt rename to compiler/testData/resolvedCalls/implicitReceiverIsExtensionReceiver.kt diff --git a/compiler/testData/resolvedCalls/implicitReceiverIsReceiverArgument.txt b/compiler/testData/resolvedCalls/implicitReceiverIsExtensionReceiver.txt similarity index 65% rename from compiler/testData/resolvedCalls/implicitReceiverIsReceiverArgument.txt rename to compiler/testData/resolvedCalls/implicitReceiverIsExtensionReceiver.txt index e1ccd3f29be..122b90fd02d 100644 --- a/compiler/testData/resolvedCalls/implicitReceiverIsReceiverArgument.txt +++ b/compiler/testData/resolvedCalls/implicitReceiverIsExtensionReceiver.txt @@ -12,5 +12,5 @@ Resolved call: Resulting descriptor: fun A.foo(): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = AExt{fun A.bar(): Unit defined in root package} \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = AExt{fun A.bar(): Unit defined in root package} diff --git a/compiler/testData/resolvedCalls/impliedThisNoExplicitReceiver.txt b/compiler/testData/resolvedCalls/impliedThisNoExplicitReceiver.txt index 16ded7b26f1..394c53cbfc0 100644 --- a/compiler/testData/resolvedCalls/impliedThisNoExplicitReceiver.txt +++ b/compiler/testData/resolvedCalls/impliedThisNoExplicitReceiver.txt @@ -11,5 +11,5 @@ Resolved call: Resulting descriptor: fun foo(): Unit defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = Class{A} -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = Class{A} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/bothReceivers.txt b/compiler/testData/resolvedCalls/invoke/bothReceivers.txt index 5b5bba4ab7d..0bdb4fa7cea 100644 --- a/compiler/testData/resolvedCalls/invoke/bothReceivers.txt +++ b/compiler/testData/resolvedCalls/invoke/bothReceivers.txt @@ -12,5 +12,5 @@ Resolved call: Resulting descriptor: fun Int.invoke(): Unit defined in Foo Explicit receiver kind = BOTH_RECEIVERS -This object = f {Foo} -Receiver argument = 1 {Int} \ No newline at end of file +Dispatch receiver = f {Foo} +Extension receiver = 1 {Int} \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/thisObjectAsReceiverForInvoke.kt b/compiler/testData/resolvedCalls/invoke/dispatchReceiverAsReceiverForInvoke.kt similarity index 100% rename from compiler/testData/resolvedCalls/invoke/thisObjectAsReceiverForInvoke.kt rename to compiler/testData/resolvedCalls/invoke/dispatchReceiverAsReceiverForInvoke.kt diff --git a/compiler/testData/resolvedCalls/invoke/thisObjectAsReceiverForInvoke.txt b/compiler/testData/resolvedCalls/invoke/dispatchReceiverAsReceiverForInvoke.txt similarity index 58% rename from compiler/testData/resolvedCalls/invoke/thisObjectAsReceiverForInvoke.txt rename to compiler/testData/resolvedCalls/invoke/dispatchReceiverAsReceiverForInvoke.txt index c3cbc2fad05..e3dd8a876cb 100644 --- a/compiler/testData/resolvedCalls/invoke/thisObjectAsReceiverForInvoke.txt +++ b/compiler/testData/resolvedCalls/invoke/dispatchReceiverAsReceiverForInvoke.txt @@ -11,6 +11,6 @@ Resolved call: Resulting descriptor: fun invoke(): Unit defined in Foo -Explicit receiver kind = THIS_OBJECT -This object = f {Foo} -Receiver argument = NO_RECEIVER \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = f {Foo} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/receiverArgumentAsReceiverForInvoke.kt b/compiler/testData/resolvedCalls/invoke/extensionReceiverAsReceiverForInvoke.kt similarity index 100% rename from compiler/testData/resolvedCalls/invoke/receiverArgumentAsReceiverForInvoke.kt rename to compiler/testData/resolvedCalls/invoke/extensionReceiverAsReceiverForInvoke.kt diff --git a/compiler/testData/resolvedCalls/invoke/receiverArgumentAsReceiverForInvoke.txt b/compiler/testData/resolvedCalls/invoke/extensionReceiverAsReceiverForInvoke.txt similarity index 59% rename from compiler/testData/resolvedCalls/invoke/receiverArgumentAsReceiverForInvoke.txt rename to compiler/testData/resolvedCalls/invoke/extensionReceiverAsReceiverForInvoke.txt index 8d36224ce21..2e9ec252b16 100644 --- a/compiler/testData/resolvedCalls/invoke/receiverArgumentAsReceiverForInvoke.txt +++ b/compiler/testData/resolvedCalls/invoke/extensionReceiverAsReceiverForInvoke.txt @@ -10,6 +10,6 @@ Resolved call: Resulting descriptor: fun Foo.invoke(): Unit defined in root package -Explicit receiver kind = RECEIVER_ARGUMENT -This object = NO_RECEIVER -Receiver argument = f {Foo} \ No newline at end of file +Explicit receiver kind = EXTENSION_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = f {Foo} \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/implicitReceiverForInvoke.txt b/compiler/testData/resolvedCalls/invoke/implicitReceiverForInvoke.txt index 5d93af8072a..e6e5fb58259 100644 --- a/compiler/testData/resolvedCalls/invoke/implicitReceiverForInvoke.txt +++ b/compiler/testData/resolvedCalls/invoke/implicitReceiverForInvoke.txt @@ -13,6 +13,6 @@ Resolved call: Resulting descriptor: fun Int.invoke(): Unit defined in Foo -Explicit receiver kind = THIS_OBJECT -This object = f {Foo} -Receiver argument = IntExt{fun Int.(): Unit defined in bar} \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = f {Foo} +Extension receiver = IntExt{fun Int.(): Unit defined in bar} \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/invokeOnClassObject1.txt b/compiler/testData/resolvedCalls/invoke/invokeOnClassObject1.txt index 8191305f7d6..38688a122a6 100644 --- a/compiler/testData/resolvedCalls/invoke/invokeOnClassObject1.txt +++ b/compiler/testData/resolvedCalls/invoke/invokeOnClassObject1.txt @@ -12,5 +12,5 @@ Resolved call: Resulting descriptor: class object defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/invokeOnClassObject2.txt b/compiler/testData/resolvedCalls/invoke/invokeOnClassObject2.txt index 7548c654134..8bb5cd24dbf 100644 --- a/compiler/testData/resolvedCalls/invoke/invokeOnClassObject2.txt +++ b/compiler/testData/resolvedCalls/invoke/invokeOnClassObject2.txt @@ -11,9 +11,9 @@ Resolved call: Resulting descriptor: fun invoke(i: Int): Int defined in A. -Explicit receiver kind = THIS_OBJECT -This object = A {} -Receiver argument = NO_RECEIVER +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = A {} +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry1.txt b/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry1.txt index d743965d187..21dd743f940 100644 --- a/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry1.txt +++ b/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry1.txt @@ -13,5 +13,5 @@ Resolved call: Resulting descriptor: enum entry ONE : A defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry2.txt b/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry2.txt index bad2fe35248..0e9260172f9 100644 --- a/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry2.txt +++ b/compiler/testData/resolvedCalls/invoke/invokeOnEnumEntry2.txt @@ -12,9 +12,9 @@ Resolved call: Resulting descriptor: fun invoke(i: Int): Int defined in A -Explicit receiver kind = THIS_OBJECT -This object = ONE {A} -Receiver argument = NO_RECEIVER +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = ONE {A} +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/invoke/invokeOnObject1.txt b/compiler/testData/resolvedCalls/invoke/invokeOnObject1.txt index 0171fd9a221..4ae8ef1d3e0 100644 --- a/compiler/testData/resolvedCalls/invoke/invokeOnObject1.txt +++ b/compiler/testData/resolvedCalls/invoke/invokeOnObject1.txt @@ -10,5 +10,5 @@ Resolved call: Resulting descriptor: object A defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/invoke/invokeOnObject2.txt b/compiler/testData/resolvedCalls/invoke/invokeOnObject2.txt index a8a294dc0aa..05190c41590 100644 --- a/compiler/testData/resolvedCalls/invoke/invokeOnObject2.txt +++ b/compiler/testData/resolvedCalls/invoke/invokeOnObject2.txt @@ -9,9 +9,9 @@ Resolved call: Resulting descriptor: fun invoke(i: Int): Int defined in A -Explicit receiver kind = THIS_OBJECT -This object = A {A} -Receiver argument = NO_RECEIVER +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = A {A} +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/objectsAndClassObjects/classObject.txt b/compiler/testData/resolvedCalls/objectsAndClassObjects/classObject.txt index 4ec116d1e0d..0bffce41c48 100644 --- a/compiler/testData/resolvedCalls/objectsAndClassObjects/classObject.txt +++ b/compiler/testData/resolvedCalls/objectsAndClassObjects/classObject.txt @@ -13,6 +13,6 @@ Resolved call: Resulting descriptor: val baz: Foo defined in Foo. -Explicit receiver kind = THIS_OBJECT -This object = Foo {} -Receiver argument = NO_RECEIVER \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = Foo {} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/objectsAndClassObjects/kt5308IntRangeConstant.txt b/compiler/testData/resolvedCalls/objectsAndClassObjects/kt5308IntRangeConstant.txt index 3538ec0a272..cf4024e785a 100644 --- a/compiler/testData/resolvedCalls/objectsAndClassObjects/kt5308IntRangeConstant.txt +++ b/compiler/testData/resolvedCalls/objectsAndClassObjects/kt5308IntRangeConstant.txt @@ -8,6 +8,6 @@ Resolved call: Resulting descriptor: val EMPTY: IntRange defined in kotlin.IntRange. -Explicit receiver kind = THIS_OBJECT -This object = IntRange {} -Receiver argument = NO_RECEIVER \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = IntRange {} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/objectsAndClassObjects/object.txt b/compiler/testData/resolvedCalls/objectsAndClassObjects/object.txt index 201605b3ee1..02b6dcc08c1 100644 --- a/compiler/testData/resolvedCalls/objectsAndClassObjects/object.txt +++ b/compiler/testData/resolvedCalls/objectsAndClassObjects/object.txt @@ -11,6 +11,6 @@ Resolved call: Resulting descriptor: val baz: Int defined in Foo -Explicit receiver kind = THIS_OBJECT -This object = Foo {Foo} -Receiver argument = NO_RECEIVER \ No newline at end of file +Explicit receiver kind = DISPATCH_RECEIVER +Dispatch receiver = Foo {Foo} +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/realExamples/stringPlusInBuilders.txt b/compiler/testData/resolvedCalls/realExamples/stringPlusInBuilders.txt index 04f0907574e..418e81067ac 100644 --- a/compiler/testData/resolvedCalls/realExamples/stringPlusInBuilders.txt +++ b/compiler/testData/resolvedCalls/realExamples/stringPlusInBuilders.txt @@ -43,6 +43,6 @@ Resolved call: Resulting descriptor: fun String.plus(): Unit defined in Title -Explicit receiver kind = RECEIVER_ARGUMENT -This object = TitleExt{fun Title.(): Unit defined in result..} -Receiver argument = "Foo" {String} \ No newline at end of file +Explicit receiver kind = EXTENSION_RECEIVER +Dispatch receiver = TitleExt{fun Title.(): Unit defined in result..} +Extension receiver = "Foo" {String} \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/resolve/mostSpecificUninferredParam.txt b/compiler/testData/resolvedCalls/resolve/mostSpecificUninferredParam.txt index 0c9dd5f07f8..b4fe0d473df 100644 --- a/compiler/testData/resolvedCalls/resolve/mostSpecificUninferredParam.txt +++ b/compiler/testData/resolvedCalls/resolve/mostSpecificUninferredParam.txt @@ -14,8 +14,8 @@ Candidate descriptor: fun doSmth(l: List): Unit defined in root package Resulting descriptor: fun doSmth(l: List): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/resolve/mostSpecificWithLambda.txt b/compiler/testData/resolvedCalls/resolve/mostSpecificWithLambda.txt index cd304376a26..734b45979c2 100644 --- a/compiler/testData/resolvedCalls/resolve/mostSpecificWithLambda.txt +++ b/compiler/testData/resolvedCalls/resolve/mostSpecificWithLambda.txt @@ -12,8 +12,8 @@ Candidate descriptor: fun bar(f: () -> T): T defined in root package Resulting descriptor: fun bar(f: () -> Unit): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER Value arguments mapping: diff --git a/compiler/testData/resolvedCalls/simpleCall.txt b/compiler/testData/resolvedCalls/simpleCall.txt index 1f63fab5ab4..4661be5a9a8 100644 --- a/compiler/testData/resolvedCalls/simpleCall.txt +++ b/compiler/testData/resolvedCalls/simpleCall.txt @@ -10,5 +10,5 @@ Resolved call: Resulting descriptor: fun foo(): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt b/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt index d094bb3e832..1bc9f903013 100644 --- a/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt +++ b/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt @@ -14,5 +14,5 @@ Resolved call: Resulting descriptor: Class{B}::this Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/thisOrSuper/labeledThis.txt b/compiler/testData/resolvedCalls/thisOrSuper/labeledThis.txt index 6259f4be2bd..3af9a9c48cb 100644 --- a/compiler/testData/resolvedCalls/thisOrSuper/labeledThis.txt +++ b/compiler/testData/resolvedCalls/thisOrSuper/labeledThis.txt @@ -10,5 +10,5 @@ Resolved call: Resulting descriptor: Class{A}::this Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt b/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt index 45c00b8f5fb..e24eb12544c 100644 --- a/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt +++ b/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt @@ -14,5 +14,5 @@ Resolved call: Resulting descriptor: Class{B}::this Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/thisOrSuper/simpleThis.txt b/compiler/testData/resolvedCalls/thisOrSuper/simpleThis.txt index 6985f488820..cac3ac471e7 100644 --- a/compiler/testData/resolvedCalls/thisOrSuper/simpleThis.txt +++ b/compiler/testData/resolvedCalls/thisOrSuper/simpleThis.txt @@ -10,5 +10,5 @@ Resolved call: Resulting descriptor: Class{A}::this Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.txt b/compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.txt index 156b0bb221e..60baf9442ba 100644 --- a/compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.txt +++ b/compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.txt @@ -10,5 +10,5 @@ Resolved call: Resulting descriptor: AExt{fun A.bar(): Unit defined in root package}::this Explicit receiver kind = NO_EXPLICIT_RECEIVER -This object = NO_RECEIVER -Receiver argument = NO_RECEIVER \ No newline at end of file +Dispatch receiver = NO_RECEIVER +Extension receiver = NO_RECEIVER \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/resolve/ResolveTestGenerated.java b/compiler/tests/org/jetbrains/jet/resolve/ResolveTestGenerated.java index e4b240292ab..c25e237e9c6 100644 --- a/compiler/tests/org/jetbrains/jet/resolve/ResolveTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/resolve/ResolveTestGenerated.java @@ -245,6 +245,18 @@ public class ResolveTestGenerated extends AbstractResolveTest { doTest(fileName); } + @TestMetadata("dispatchReceiverVsExtensionReceiver.resolve") + public void testDispatchReceiverVsExtensionReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolve/candidatesPriority/dispatchReceiverVsExtensionReceiver.resolve"); + doTest(fileName); + } + + @TestMetadata("dispatchReceiverVsExtensionReceiver2.resolve") + public void testDispatchReceiverVsExtensionReceiver2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolve/candidatesPriority/dispatchReceiverVsExtensionReceiver2.resolve"); + doTest(fileName); + } + @TestMetadata("extensionToCloserReceiverVsMember.resolve") public void testExtensionToCloserReceiverVsMember() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolve/candidatesPriority/extensionToCloserReceiverVsMember.resolve"); @@ -299,18 +311,6 @@ public class ResolveTestGenerated extends AbstractResolveTest { doTest(fileName); } - @TestMetadata("receiverVsThisObject.resolve") - public void testReceiverVsThisObject() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolve/candidatesPriority/receiverVsThisObject.resolve"); - doTest(fileName); - } - - @TestMetadata("receiverVsThisObject2.resolve") - public void testReceiverVsThisObject2() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolve/candidatesPriority/receiverVsThisObject2.resolve"); - doTest(fileName); - } - @TestMetadata("wrongReceiverVsOtherError.resolve") public void testWrongReceiverVsOtherError() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolve/candidatesPriority/wrongReceiverVsOtherError.resolve"); diff --git a/compiler/tests/org/jetbrains/jet/resolve/calls/AbstractResolvedCallsTest.kt b/compiler/tests/org/jetbrains/jet/resolve/calls/AbstractResolvedCallsTest.kt index 4b25ea55fe0..ba74695202f 100644 --- a/compiler/tests/org/jetbrains/jet/resolve/calls/AbstractResolvedCallsTest.kt +++ b/compiler/tests/org/jetbrains/jet/resolve/calls/AbstractResolvedCallsTest.kt @@ -98,8 +98,8 @@ private fun ResolvedCall<*>.renderToText(): String { appendln() appendln("Explicit receiver kind = ${getExplicitReceiverKind()}") - appendln("This object = ${getThisObject().getText()}") - appendln("Receiver argument = ${getReceiverArgument().getText()}") + appendln("Dispatch receiver = ${getDispatchReceiver().getText()}") + appendln("Extension receiver = ${getExtensionReceiver().getText()}") val valueArguments = getCall().getValueArguments() if (!valueArguments.isEmpty()) { diff --git a/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java b/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java index 566adf9be11..518404c2588 100644 --- a/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java @@ -39,39 +39,39 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/resolvedCalls"), Pattern.compile("^(.+)\\.kt$"), true); } - @TestMetadata("explicitReceiverIsReceiverArgument.kt") - public void testExplicitReceiverIsReceiverArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/explicitReceiverIsReceiverArgument.kt"); + @TestMetadata("explicitReceiverIsDispatchReceiver.kt") + public void testExplicitReceiverIsDispatchReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/explicitReceiverIsDispatchReceiver.kt"); doTest(fileName); } - @TestMetadata("explicitReceiverIsThisObject.kt") - public void testExplicitReceiverIsThisObject() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/explicitReceiverIsThisObject.kt"); + @TestMetadata("explicitReceiverIsExtensionReceiver.kt") + public void testExplicitReceiverIsExtensionReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/explicitReceiverIsExtensionReceiver.kt"); doTest(fileName); } - @TestMetadata("hasBothThisObjectAndReceiverArgument.kt") - public void testHasBothThisObjectAndReceiverArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgument.kt"); + @TestMetadata("hasBothDispatchAndExtensionReceivers.kt") + public void testHasBothDispatchAndExtensionReceivers() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceivers.kt"); doTest(fileName); } - @TestMetadata("hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.kt") - public void testHasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/hasBothThisObjectAndReceiverArgumentWithoutExplicitReceiver.kt"); + @TestMetadata("hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.kt") + public void testHasBothDispatchAndExtensionReceiversWithoutExplicitReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/hasBothDispatchAndExtensionReceiversWithoutExplicitReceiver.kt"); doTest(fileName); } - @TestMetadata("implicitReceiverIsReceiverArgument.kt") - public void testImplicitReceiverIsReceiverArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/implicitReceiverIsReceiverArgument.kt"); + @TestMetadata("implicitReceiverIsDispatchReceiver.kt") + public void testImplicitReceiverIsDispatchReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/implicitReceiverIsDispatchReceiver.kt"); doTest(fileName); } - @TestMetadata("implicitReceiverIsThisObject.kt") - public void testImplicitReceiverIsThisObject() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/implicitReceiverIsThisObject.kt"); + @TestMetadata("implicitReceiverIsExtensionReceiver.kt") + public void testImplicitReceiverIsExtensionReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/implicitReceiverIsExtensionReceiver.kt"); doTest(fileName); } @@ -360,6 +360,18 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest { doTest(fileName); } + @TestMetadata("dispatchReceiverAsReceiverForInvoke.kt") + public void testDispatchReceiverAsReceiverForInvoke() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/invoke/dispatchReceiverAsReceiverForInvoke.kt"); + doTest(fileName); + } + + @TestMetadata("extensionReceiverAsReceiverForInvoke.kt") + public void testExtensionReceiverAsReceiverForInvoke() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/invoke/extensionReceiverAsReceiverForInvoke.kt"); + doTest(fileName); + } + @TestMetadata("implicitReceiverForInvoke.kt") public void testImplicitReceiverForInvoke() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/invoke/implicitReceiverForInvoke.kt"); @@ -402,18 +414,6 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest { doTest(fileName); } - @TestMetadata("receiverArgumentAsReceiverForInvoke.kt") - public void testReceiverArgumentAsReceiverForInvoke() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/invoke/receiverArgumentAsReceiverForInvoke.kt"); - doTest(fileName); - } - - @TestMetadata("thisObjectAsReceiverForInvoke.kt") - public void testThisObjectAsReceiverForInvoke() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/resolvedCalls/invoke/thisObjectAsReceiverForInvoke.kt"); - doTest(fileName); - } - } @TestMetadata("compiler/testData/resolvedCalls/objectsAndClassObjects") diff --git a/compiler/tests/org/jetbrains/jet/test/util/RecursiveDescriptorProcessor.java b/compiler/tests/org/jetbrains/jet/test/util/RecursiveDescriptorProcessor.java index dbebc3f3402..4538c024e75 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/RecursiveDescriptorProcessor.java +++ b/compiler/tests/org/jetbrains/jet/test/util/RecursiveDescriptorProcessor.java @@ -61,7 +61,7 @@ public class RecursiveDescriptorProcessor { private boolean processCallable(CallableDescriptor descriptor, D data) { return applyWorker(descriptor, data) && visitChildren(descriptor.getTypeParameters(), data) - && visitChildren(descriptor.getReceiverParameter(), data) + && visitChildren(descriptor.getExtensionReceiverParameter(), data) && visitChildren(descriptor.getValueParameters(), data); } diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt index c4e43b7f693..a55221f037d 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -237,8 +237,8 @@ public class LazyJavaClassMemberScope( } } - override fun getExpectedThisObject(): ReceiverParameterDescriptor? = - DescriptorUtils.getExpectedThisObjectIfNeeded(getContainingDeclaration()) + override fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? = + DescriptorUtils.getDispatchReceiverParameterIfNeeded(getContainingDeclaration()) override fun getClassifier(name: Name): ClassifierDescriptor? = nestedClasses(name) override fun getAllClassNames(): Collection = nestedClassIndex().keySet() + enumEntryIndex().keySet() diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt index 33800875168..9438cb2cad0 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt @@ -69,7 +69,7 @@ public abstract class LazyJavaMemberScope( protected abstract fun computeNonDeclaredFunctions(result: MutableCollection, name: Name) - protected abstract fun getExpectedThisObject(): ReceiverParameterDescriptor? + protected abstract fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? protected abstract fun computeAdditionalFunctions(name: Name): Collection @@ -140,7 +140,7 @@ public abstract class LazyJavaMemberScope( functionDescriptorImpl.initialize( effectiveSignature.getReceiverType(), - getExpectedThisObject(), + getDispatchReceiverParameter(), effectiveSignature.getTypeParameters(), effectiveSignature.getValueParameters(), effectiveSignature.getReturnType(), @@ -258,7 +258,7 @@ public abstract class LazyJavaMemberScope( c.externalSignatureResolver.reportSignatureErrors(propertyDescriptor, signatureErrors) } - propertyDescriptor.setType(effectiveSignature.getReturnType(), listOf(), getExpectedThisObject(), null : JetType?) + propertyDescriptor.setType(effectiveSignature.getReturnType(), listOf(), getDispatchReceiverParameter(), null : JetType?) if (DescriptorUtils.shouldRecordInitializerForProperty(propertyDescriptor, propertyDescriptor.getType())) { propertyDescriptor.setCompileTimeInitializer( diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt index eabeabd6744..803020fbbec 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt @@ -40,7 +40,7 @@ public abstract class LazyJavaStaticScope( descriptor: ClassOrPackageFragmentDescriptor ) : LazyJavaMemberScope(c.withTypes(), descriptor) { - override fun getExpectedThisObject() = null + override fun getDispatchReceiverParameter() = null // Package fragments are not nested override fun getPackage(name: Name) = null diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java index 713f2054f8d..2c537d796b4 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java @@ -189,7 +189,7 @@ public class SingleAbstractMethodUtils { ) { result.initialize( null, - original.getExpectedThisObject(), + original.getDispatchReceiverParameter(), typeParameters, valueParameters, returnType, diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java index 53853b1eb0f..78971999e78 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java @@ -27,10 +27,10 @@ import java.util.Set; public interface CallableDescriptor extends DeclarationDescriptorWithVisibility, DeclarationDescriptorNonRoot { @Nullable - ReceiverParameterDescriptor getReceiverParameter(); + ReceiverParameterDescriptor getExtensionReceiverParameter(); @Nullable - ReceiverParameterDescriptor getExpectedThisObject(); + ReceiverParameterDescriptor getDispatchReceiverParameter(); @KotlinSignature("fun getTypeParameters(): List") @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java index ca3e0cb5ee0..cdb8113224b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java @@ -54,13 +54,13 @@ public abstract class AbstractReceiverParameterDescriptor extends DeclarationDes @Nullable @Override - public ReceiverParameterDescriptor getReceiverParameter() { + public ReceiverParameterDescriptor getExtensionReceiverParameter() { return null; } @Nullable @Override - public ReceiverParameterDescriptor getExpectedThisObject() { + public ReceiverParameterDescriptor getDispatchReceiverParameter() { return null; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java index 4ffa2ea76e0..914e3c4f97d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java @@ -61,12 +61,12 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements @NotNull List unsubstitutedValueParameters, @NotNull Visibility visibility ) { - super.initialize(null, calculateExpectedThisObject(), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL, visibility); + super.initialize(null, calculateDispatchReceiverParameter(), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL, visibility); return this; } @Nullable - private ReceiverParameterDescriptor calculateExpectedThisObject() { + private ReceiverParameterDescriptor calculateDispatchReceiverParameter() { ClassDescriptor classDescriptor = getContainingDeclaration(); if (classDescriptor.isInner()) { DeclarationDescriptor classContainer = classDescriptor.getContainingDeclaration(); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java index 9d1d1ed9e6d..8f5cbbe0e5d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java @@ -37,8 +37,8 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo private List typeParameters; private List unsubstitutedValueParameters; private JetType unsubstitutedReturnType; - private ReceiverParameterDescriptor receiverParameter; - private ReceiverParameterDescriptor expectedThisObject; + private ReceiverParameterDescriptor extensionReceiverParameter; + private ReceiverParameterDescriptor dispatchReceiverParameter; private Modality modality; private Visibility visibility; private final Set overriddenFunctions = new LinkedHashSet(); // LinkedHashSet is essential here @@ -61,7 +61,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo @NotNull public FunctionDescriptorImpl initialize( @Nullable JetType receiverParameterType, - @Nullable ReceiverParameterDescriptor expectedThisObject, + @Nullable ReceiverParameterDescriptor dispatchReceiverParameter, @NotNull List typeParameters, @NotNull List unsubstitutedValueParameters, @Nullable JetType unsubstitutedReturnType, @@ -73,8 +73,8 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo this.unsubstitutedReturnType = unsubstitutedReturnType; this.modality = modality; this.visibility = visibility; - this.receiverParameter = DescriptorFactory.createReceiverParameterForCallable(this, receiverParameterType); - this.expectedThisObject = expectedThisObject; + this.extensionReceiverParameter = DescriptorFactory.createExtensionReceiverParameterForCallable(this, receiverParameterType); + this.dispatchReceiverParameter = dispatchReceiverParameter; for (int i = 0; i < typeParameters.size(); ++i) { TypeParameterDescriptor typeParameterDescriptor = typeParameters.get(i); @@ -109,14 +109,14 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo @Nullable @Override - public ReceiverParameterDescriptor getReceiverParameter() { - return receiverParameter; + public ReceiverParameterDescriptor getExtensionReceiverParameter() { + return extensionReceiverParameter; } @Nullable @Override - public ReceiverParameterDescriptor getExpectedThisObject() { - return expectedThisObject; + public ReceiverParameterDescriptor getDispatchReceiverParameter() { + return dispatchReceiverParameter; } @NotNull @@ -207,16 +207,16 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo ); JetType substitutedReceiverParameterType = null; - if (receiverParameter != null) { - substitutedReceiverParameterType = substitutor.substitute(getReceiverParameter().getType(), Variance.IN_VARIANCE); + if (extensionReceiverParameter != null) { + substitutedReceiverParameterType = substitutor.substitute(getExtensionReceiverParameter().getType(), Variance.IN_VARIANCE); if (substitutedReceiverParameterType == null) { return null; } } ReceiverParameterDescriptor substitutedExpectedThis = null; - if (expectedThisObject != null) { - substitutedExpectedThis = expectedThisObject.substitute(substitutor); + if (dispatchReceiverParameter != null) { + substitutedExpectedThis = dispatchReceiverParameter.substitute(substitutor); if (substitutedExpectedThis == null) { return null; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java index b9ba2a6c5d9..1335ef28b96 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java @@ -119,14 +119,14 @@ public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescript @Nullable @Override - public ReceiverParameterDescriptor getReceiverParameter() { - return getCorrespondingProperty().getReceiverParameter(); + public ReceiverParameterDescriptor getExtensionReceiverParameter() { + return getCorrespondingProperty().getExtensionReceiverParameter(); } @Nullable @Override - public ReceiverParameterDescriptor getExpectedThisObject() { - return getCorrespondingProperty().getExpectedThisObject(); + public ReceiverParameterDescriptor getDispatchReceiverParameter() { + return getCorrespondingProperty().getDispatchReceiverParameter(); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java index ae990235989..9fa4417380c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyDescriptorImpl.java @@ -39,8 +39,8 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr private final PropertyDescriptor original; private final Kind kind; - private ReceiverParameterDescriptor expectedThisObject; - private ReceiverParameterDescriptor receiverParameter; + private ReceiverParameterDescriptor dispatchReceiverParameter; + private ReceiverParameterDescriptor extensionReceiverParameter; private List typeParameters; private PropertyGetterDescriptorImpl getter; private PropertySetterDescriptor setter; @@ -82,25 +82,25 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr public void setType( @NotNull JetType outType, @NotNull List typeParameters, - @Nullable ReceiverParameterDescriptor expectedThisObject, + @Nullable ReceiverParameterDescriptor dispatchReceiverParameter, @Nullable JetType receiverType ) { - ReceiverParameterDescriptor receiverParameter = DescriptorFactory.createReceiverParameterForCallable(this, receiverType); - setType(outType, typeParameters, expectedThisObject, receiverParameter); + ReceiverParameterDescriptor extensionReceiverParameter = DescriptorFactory.createExtensionReceiverParameterForCallable(this, receiverType); + setType(outType, typeParameters, dispatchReceiverParameter, extensionReceiverParameter); } public void setType( @NotNull JetType outType, @NotNull List typeParameters, - @Nullable ReceiverParameterDescriptor expectedThisObject, - @Nullable ReceiverParameterDescriptor receiverParameter + @Nullable ReceiverParameterDescriptor dispatchReceiverParameter, + @Nullable ReceiverParameterDescriptor extensionReceiverParameter ) { setOutType(outType); this.typeParameters = new ArrayList(typeParameters); - this.receiverParameter = receiverParameter; - this.expectedThisObject = expectedThisObject; + this.extensionReceiverParameter = extensionReceiverParameter; + this.dispatchReceiverParameter = dispatchReceiverParameter; } public void initialize(@Nullable PropertyGetterDescriptorImpl getter, @Nullable PropertySetterDescriptor setter) { @@ -124,14 +124,14 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr @Override @Nullable - public ReceiverParameterDescriptor getReceiverParameter() { - return receiverParameter; + public ReceiverParameterDescriptor getExtensionReceiverParameter() { + return extensionReceiverParameter; } @Nullable @Override - public ReceiverParameterDescriptor getExpectedThisObject() { - return expectedThisObject; + public ReceiverParameterDescriptor getDispatchReceiverParameter() { + return dispatchReceiverParameter; } @NotNull @@ -220,26 +220,26 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr } - ReceiverParameterDescriptor substitutedExpectedThisObject; - ReceiverParameterDescriptor expectedThisObject = getExpectedThisObject(); - if (expectedThisObject != null) { - substitutedExpectedThisObject = expectedThisObject.substitute(substitutor); - if (substitutedExpectedThisObject == null) return null; + ReceiverParameterDescriptor substitutedDispatchReceiver; + ReceiverParameterDescriptor dispatchReceiver = getDispatchReceiverParameter(); + if (dispatchReceiver != null) { + substitutedDispatchReceiver = dispatchReceiver.substitute(substitutor); + if (substitutedDispatchReceiver == null) return null; } else { - substitutedExpectedThisObject = null; + substitutedDispatchReceiver = null; } JetType substitutedReceiverType; - if (receiverParameter != null) { - substitutedReceiverType = substitutor.substitute(receiverParameter.getType(), Variance.IN_VARIANCE); + if (extensionReceiverParameter != null) { + substitutedReceiverType = substitutor.substitute(extensionReceiverParameter.getType(), Variance.IN_VARIANCE); if (substitutedReceiverType == null) return null; } else { substitutedReceiverType = null; } - substitutedDescriptor.setType(outType, substitutedTypeParameters, substitutedExpectedThisObject, substitutedReceiverType); + substitutedDescriptor.setType(outType, substitutedTypeParameters, substitutedDispatchReceiver, substitutedReceiverType); PropertyGetterDescriptorImpl newGetter = getter == null ? null : new PropertyGetterDescriptorImpl( substitutedDescriptor, getter.getAnnotations(), newModality, convertVisibility(getter.getVisibility(), newVisibility), diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ScriptCodeDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ScriptCodeDescriptor.java index 21173e81735..3701cdd9cc1 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ScriptCodeDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ScriptCodeDescriptor.java @@ -33,10 +33,10 @@ public class ScriptCodeDescriptor extends FunctionDescriptorImpl { } public void initialize( - @NotNull ReceiverParameterDescriptor expectedThisObject, + @NotNull ReceiverParameterDescriptor dispatchReceiverParameter, @NotNull List valueParameters, @NotNull JetType returnType) { - super.initialize(null, expectedThisObject, Collections.emptyList(), valueParameters, returnType, Modality.FINAL, Visibilities.INTERNAL); + super.initialize(null, dispatchReceiverParameter, Collections.emptyList(), valueParameters, returnType, Modality.FINAL, Visibilities.INTERNAL); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SimpleFunctionDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SimpleFunctionDescriptorImpl.java index b9f7e397c5f..a2fe5ffc80d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SimpleFunctionDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SimpleFunctionDescriptorImpl.java @@ -59,14 +59,14 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme @Override public SimpleFunctionDescriptorImpl initialize( @Nullable JetType receiverParameterType, - @Nullable ReceiverParameterDescriptor expectedThisObject, + @Nullable ReceiverParameterDescriptor dispatchReceiverParameter, @NotNull List typeParameters, @NotNull List unsubstitutedValueParameters, @Nullable JetType unsubstitutedReturnType, @Nullable Modality modality, @NotNull Visibility visibility ) { - super.initialize(receiverParameterType, expectedThisObject, typeParameters, unsubstitutedValueParameters, unsubstitutedReturnType, + super.initialize(receiverParameterType, dispatchReceiverParameter, typeParameters, unsubstitutedValueParameters, unsubstitutedReturnType, modality, visibility); this.inlineStrategy = InlineUtil.getInlineType(this); return this; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java index a01013f8ee3..02f5544325a 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java @@ -105,12 +105,12 @@ public abstract class VariableDescriptorImpl extends DeclarationDescriptorNonRoo } @Override - public ReceiverParameterDescriptor getReceiverParameter() { + public ReceiverParameterDescriptor getExtensionReceiverParameter() { return ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER; } @Override - public ReceiverParameterDescriptor getExpectedThisObject() { + public ReceiverParameterDescriptor getDispatchReceiverParameter() { return ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java index 98c47598038..f09da3fdf19 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java @@ -108,7 +108,7 @@ public class DescriptorFactory { } @Nullable - public static ReceiverParameterDescriptor createReceiverParameterForCallable( + public static ReceiverParameterDescriptor createExtensionReceiverParameterForCallable( @NotNull CallableDescriptor owner, @Nullable JetType receiverParameterType ) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index d9eb99fe583..9ac8fb7c476 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -48,7 +48,7 @@ public class DescriptorUtils { } @Nullable - public static ReceiverParameterDescriptor getExpectedThisObjectIfNeeded(@NotNull DeclarationDescriptor containingDeclaration) { + public static ReceiverParameterDescriptor getDispatchReceiverParameterIfNeeded(@NotNull DeclarationDescriptor containingDeclaration) { if (containingDeclaration instanceof ClassDescriptor) { ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration; return classDescriptor.getThisAsReceiverParameter(); @@ -139,7 +139,7 @@ public class DescriptorUtils { DeclarationDescriptor container = descriptor.getContainingDeclaration(); return container instanceof PackageFragmentDescriptor || - (container instanceof ClassDescriptor && descriptor.getExpectedThisObject() == null); + (container instanceof ClassDescriptor && descriptor.getDispatchReceiverParameter() == null); } // WARNING! Don't use this method in JVM backend, use JvmCodegenUtil.isCallInsideSameModuleAsDeclared() instead. diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.kt index f535575c307..5a8a4eee290 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.kt @@ -31,4 +31,4 @@ public fun DeclarationDescriptor.getImportableDescriptor(): DeclarationDescripto if (this is ConstructorDescriptor || DescriptorUtils.isClassObject(this)) getContainingDeclaration()!! else this public val DeclarationDescriptor.isExtension: Boolean - get() = this is CallableDescriptor && getReceiverParameter() != null \ No newline at end of file + get() = this is CallableDescriptor && getExtensionReceiverParameter() != null \ No newline at end of file diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java index ca22ed2e83d..5153a696d78 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java @@ -182,7 +182,7 @@ public class OverridingUtil { CallableDescriptor superDescriptor, CallableDescriptor subDescriptor ) { - if ((superDescriptor.getReceiverParameter() == null) != (subDescriptor.getReceiverParameter() == null)) { + if ((superDescriptor.getExtensionReceiverParameter() == null) != (subDescriptor.getExtensionReceiverParameter() == null)) { return OverrideCompatibilityInfo.receiverPresenceMismatch(); } @@ -206,7 +206,7 @@ public class OverridingUtil { } static List compiledValueParameters(CallableDescriptor callableDescriptor) { - ReceiverParameterDescriptor receiverParameter = callableDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = callableDescriptor.getExtensionReceiverParameter(); ArrayList parameters = new ArrayList(); if (receiverParameter != null) { parameters.add(receiverParameter.getType()); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java index eeb0b6d913c..63b8112542f 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java @@ -50,7 +50,7 @@ public class ErrorUtils { if (containsErrorType(function.getReturnType())) { return true; } - ReceiverParameterDescriptor receiverParameter = function.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = function.getExtensionReceiverParameter(); if (receiverParameter != null && containsErrorType(receiverParameter.getType())) { return true; } diff --git a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index d41fd1ea4bb..3c19831b9c6 100644 --- a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -654,14 +654,14 @@ public class DescriptorRendererImpl implements DescriptorRenderer { private void renderReceiverAfterName(CallableDescriptor callableDescriptor, StringBuilder builder) { if (!receiverAfterName) return; - ReceiverParameterDescriptor receiver = callableDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiver = callableDescriptor.getExtensionReceiverParameter(); if (receiver != null) { builder.append(" on ").append(escape(renderType(receiver.getType()))); } } private void renderReceiver(CallableDescriptor callableDescriptor, StringBuilder builder) { - ReceiverParameterDescriptor receiver = callableDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiver = callableDescriptor.getExtensionReceiverParameter(); if (receiver != null) { builder.append(escape(renderType(receiver.getType()))).append("."); } diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java index 65204242a23..6c71c41e961 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java @@ -214,7 +214,7 @@ public class DescriptorSerializer { builder.addTypeParameter(local.typeParameter(typeParameterDescriptor)); } - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = descriptor.getExtensionReceiverParameter(); if (receiverParameter != null) { builder.setReceiverType(local.type(receiverParameter.getType())); } diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java index b0f93af3331..667c7514abb 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java @@ -83,7 +83,7 @@ public class MemberDeserializer { property.setType( local.getTypeDeserializer().type(proto.getReturnType()), typeParameters, - getExpectedThisObject(), + getDispatchReceiverParameter(), local.getTypeDeserializer().typeOrNull(proto.hasReceiverType() ? proto.getReceiverType() : null) ); @@ -161,7 +161,7 @@ public class MemberDeserializer { DeserializationContextWithTypes local = context.childContext(function, proto.getTypeParameterList(), typeParameters); function.initialize( local.getTypeDeserializer().typeOrNull(proto.hasReceiverType() ? proto.getReceiverType() : null), - getExpectedThisObject(), + getDispatchReceiverParameter(), typeParameters, local.getDeserializer().valueParameters(proto, AnnotatedCallableKind.FUNCTION), local.getTypeDeserializer().type(proto.getReturnType()), @@ -172,7 +172,7 @@ public class MemberDeserializer { } @Nullable - private ReceiverParameterDescriptor getExpectedThisObject() { + private ReceiverParameterDescriptor getDispatchReceiverParameter() { DeclarationDescriptor containingDeclaration = context.getContainingDeclaration(); return containingDeclaration instanceof ClassDescriptor ? ((ClassDescriptor) containingDeclaration).getThisAsReceiverParameter() : null; diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java index 5a4f4e9239a..85999cace1a 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java @@ -85,7 +85,7 @@ public class FunctionsHighlightingVisitor extends AfterAnalysisHighlightingVisit if (DescriptorUtils.isTopLevelDeclaration(fun)) { JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.PACKAGE_FUNCTION_CALL); } - if (fun.getReceiverParameter() != null) { + if (fun.getExtensionReceiverParameter() != null) { JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.EXTENSION_FUNCTION_CALL); } } diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java index 9f28acd619c..9bdaa1c26b3 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java @@ -87,7 +87,7 @@ class PropertiesHighlightingVisitor extends AfterAnalysisHighlightingVisitor { holder, elementToHighlight, isStatic ? JetHighlightingColors.PACKAGE_PROPERTY : JetHighlightingColors.INSTANCE_PROPERTY ); - if (descriptor.getReceiverParameter() != null) { + if (descriptor.getExtensionReceiverParameter() != null) { JetPsiChecker.highlightName(holder, elementToHighlight, JetHighlightingColors.EXTENSION_PROPERTY); } if (withBackingField) { diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt index 9c6909f534d..6d7e9980414 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt @@ -76,7 +76,7 @@ fun renderResolvedCall(resolvedCall: ResolvedCall): } val resultingDescriptor = resolvedCall.getResultingDescriptor() - val receiverParameter = resultingDescriptor.getReceiverParameter() + val receiverParameter = resultingDescriptor.getExtensionReceiverParameter() if (receiverParameter != null) { append(htmlRenderer.renderType(receiverParameter.getType())).append(".") } diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java index 6c4b9fffc2b..97da2cf3a2a 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java @@ -144,7 +144,7 @@ public class MemberMatching { /* DECLARATION AND DESCRIPTOR STRICT MATCHING */ static boolean receiversMatch(@NotNull JetNamedDeclaration declaration, @NotNull CallableDescriptor descriptor) { JetTypeReference declarationReceiver = getReceiverType(declaration); - ReceiverParameterDescriptor descriptorReceiver = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor descriptorReceiver = descriptor.getExtensionReceiverParameter(); if (declarationReceiver == null && descriptorReceiver == null) { return true; } diff --git a/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java b/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java index 2fe0ba92e4d..8ed1579a2ea 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java @@ -86,7 +86,7 @@ public final class JetDescriptorIconProvider { } if (descriptor instanceof FunctionDescriptor) { FunctionDescriptor functionDescriptor = (FunctionDescriptor) descriptor; - if (functionDescriptor.getReceiverParameter() != null) { + if (functionDescriptor.getExtensionReceiverParameter() != null) { return JetIcons.EXTENSION_FUNCTION; } diff --git a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt index 266e3742f80..c05288dc615 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt +++ b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt @@ -169,7 +169,7 @@ public class KotlinIndicesHelper(private val project: Project) { return declarationDescriptors .filterIsInstance(javaClass()) - .filter { it.getReceiverParameter() != null && ExpressionTypingUtils.checkIsExtensionCallable(receiverValue, it, isInfixCall, bindingContext, dataFlowInfo) } + .filter { it.getExtensionReceiverParameter() != null && ExpressionTypingUtils.checkIsExtensionCallable(receiverValue, it, isInfixCall, bindingContext, dataFlowInfo) } } public fun getClassDescriptors(nameFilter: (String) -> Boolean, analyzer: KotlinCodeAnalyzer, scope: GlobalSearchScope): Collection { @@ -195,7 +195,7 @@ public class KotlinIndicesHelper(private val project: Project) { private fun findTopLevelCallables(fqName: FqName, context: JetExpression, jetScope: JetScope, resolveSession: ResolveSessionForBodies): Collection { val importDirective = JetPsiFactory(context.getProject()).createImportDirective(ImportPath(fqName, false)) val allDescriptors = analyzeImportReference(importDirective, jetScope, BindingTraceContext(), resolveSession.getModuleDescriptor()) - return allDescriptors.filterIsInstance(javaClass()).filter { it.getReceiverParameter() == null } + return allDescriptors.filterIsInstance(javaClass()).filter { it.getExtensionReceiverParameter() == null } } private fun analyzeImportReference( diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java index fd7e64f74f3..02f51961bce 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java @@ -154,7 +154,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns StringBuilder body = new StringBuilder(); String defaultInitializer = CodeInsightUtils.defaultInitializer(descriptor.getType()); String initializer = defaultInitializer != null ? " = " + defaultInitializer : " = ?"; - if (descriptor.getReceiverParameter() != null) { + if (descriptor.getExtensionReceiverParameter() != null) { body.append("\nget()"); body.append(initializer); if (descriptor.isVar()) { diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt b/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt index 2652ef40dae..4300f574992 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt @@ -330,7 +330,7 @@ public object ShortenReferences { private fun DeclarationDescriptor.asString() = DescriptorRenderer.FQ_NAMES_IN_TYPES.render(this) private fun ResolvedCall<*>.asString(): String { - return "${getReceiverArgument()}, ${getThisObject()} -> ${getResultingDescriptor()?.let {FQ_NAMES_IN_TYPES.render(it)}}" + return "${getExtensionReceiver()}, ${getDispatchReceiver()} -> ${getResultingDescriptor()?.let {FQ_NAMES_IN_TYPES.render(it)}}" } //TODO: do we need this "IfNeeded" check? diff --git a/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.kt b/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.kt index 505208001d7..ac4408ed60c 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/DescriptorLookupConverter.kt @@ -57,8 +57,8 @@ public object DescriptorLookupConverter { typeText = if (returnType != null) DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(returnType) else "" presentableText += DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderFunctionParameters(descriptor) - if (descriptor.getReceiverParameter() != null) { - tailText += " for " + DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(descriptor.getReceiverParameter()!!.getType()) + if (descriptor.getExtensionReceiverParameter() != null) { + tailText += " for " + DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(descriptor.getExtensionReceiverParameter()!!.getType()) tailText += " in " + DescriptorUtils.getFqName(descriptor.getContainingDeclaration()) } } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetCallableInsertHandler.kt b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetCallableInsertHandler.kt index c4a5415e68f..9d8bdfe43e0 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetCallableInsertHandler.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetCallableInsertHandler.kt @@ -61,7 +61,7 @@ public abstract class JetCallableInsertHandler : BaseDeclarationInsertHandler() val descriptor = o.descriptor as? CallableDescriptor if (descriptor != null) { if (PsiTreeUtil.getParentOfType(element, javaClass()) != null && - descriptor.getReceiverParameter() == null) { + descriptor.getExtensionReceiverParameter() == null) { return@runReadAction } diff --git a/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt b/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt index 69866f8fbc0..83087478a8f 100644 --- a/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt +++ b/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt @@ -202,7 +202,7 @@ class KotlinEvaluator(val codeFragment: JetCodeFragment, val bindingContext = getAnalysisResults().getBindingContext() val descriptor = bindingContext[BindingContext.FUNCTION, this] if (descriptor != null) { - val receiver = descriptor.getReceiverParameter() + val receiver = descriptor.getExtensionReceiverParameter() if (receiver != null) { parameters.add(THIS_NAME, receiver.getType()) } diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/MakeTypeExplicitInLambdaIntention.kt b/idea/src/org/jetbrains/jet/plugin/intentions/MakeTypeExplicitInLambdaIntention.kt index 737ba5bd756..777d53916c6 100644 --- a/idea/src/org/jetbrains/jet/plugin/intentions/MakeTypeExplicitInLambdaIntention.kt +++ b/idea/src/org/jetbrains/jet/plugin/intentions/MakeTypeExplicitInLambdaIntention.kt @@ -47,7 +47,7 @@ public class MakeTypeExplicitInLambdaIntention : JetSelfTargetingIntention resolvedCall?.getThisObject() + ReceiverValue.NO_RECEIVER -> resolvedCall?.getDispatchReceiver() else -> receiverArgument } ?: ReceiverValue.NO_RECEIVER diff --git a/idea/src/org/jetbrains/jet/plugin/search/usagesSearch/utils.kt b/idea/src/org/jetbrains/jet/plugin/search/usagesSearch/utils.kt index d883905b60e..4e2fb69df50 100644 --- a/idea/src/org/jetbrains/jet/plugin/search/usagesSearch/utils.kt +++ b/idea/src/org/jetbrains/jet/plugin/search/usagesSearch/utils.kt @@ -102,7 +102,7 @@ fun PsiReference.isExtensionOfDeclarationClassUsage(declaration: JetNamedDeclara usageDescriptor !is FunctionDescriptor -> false else -> { val receiverDescriptor = - usageDescriptor.getReceiverParameter()?.getType()?.getConstructor()?.getDeclarationDescriptor() + usageDescriptor.getExtensionReceiverParameter()?.getType()?.getConstructor()?.getDeclarationDescriptor() val containingDescriptor = targetDescriptor.getContainingDeclaration() containingDescriptor == receiverDescriptor diff --git a/idea/src/org/jetbrains/jet/plugin/util/psi/patternMatching/JetPsiUnifier.kt b/idea/src/org/jetbrains/jet/plugin/util/psi/patternMatching/JetPsiUnifier.kt index eb3f34ba4d7..be8597a70f0 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/psi/patternMatching/JetPsiUnifier.kt +++ b/idea/src/org/jetbrains/jet/plugin/util/psi/patternMatching/JetPsiUnifier.kt @@ -182,7 +182,7 @@ public class JetPsiUnifier( private fun matchCalls(call1: Call, call2: Call): Boolean { return matchReceivers(call1.getExplicitReceiver(), call2.getExplicitReceiver()) && - matchReceivers(call1.getThisObject(), call2.getThisObject()) + matchReceivers(call1.getDispatchReceiver(), call2.getDispatchReceiver()) } private fun matchArguments(arg1: ValueArgument, arg2: ValueArgument): Status { @@ -238,13 +238,13 @@ public class JetPsiUnifier( fun checkImplicitReceiver(implicitCall: ResolvedCall<*>, explicitCall: ResolvedCall<*>): Boolean { val (implicitReceiver, explicitReceiver) = when (explicitCall.getExplicitReceiverKind()) { - ExplicitReceiverKind.RECEIVER_ARGUMENT -> - (implicitCall.getReceiverArgument() as? ThisReceiver) to - (explicitCall.getReceiverArgument() as? ExpressionReceiver) + ExplicitReceiverKind.EXTENSION_RECEIVER -> + (implicitCall.getExtensionReceiver() as? ThisReceiver) to + (explicitCall.getExtensionReceiver() as? ExpressionReceiver) - ExplicitReceiverKind.THIS_OBJECT -> - (implicitCall.getThisObject() as? ThisReceiver) to - (explicitCall.getThisObject() as? ExpressionReceiver) + ExplicitReceiverKind.DISPATCH_RECEIVER -> + (implicitCall.getDispatchReceiver() as? ThisReceiver) to + (explicitCall.getDispatchReceiver() as? ExpressionReceiver) else -> null to null @@ -262,8 +262,8 @@ public class JetPsiUnifier( fun checkReceivers(): Boolean { return when { rc1.getExplicitReceiverKind() == rc2.getExplicitReceiverKind() -> { - matchReceivers(rc1.getReceiverArgument(), rc2.getReceiverArgument()) && - (rc1.getExplicitReceiverKind() == ExplicitReceiverKind.BOTH_RECEIVERS || matchReceivers(rc1.getThisObject(), rc2.getThisObject())) + matchReceivers(rc1.getExtensionReceiver(), rc2.getExtensionReceiver()) && + (rc1.getExplicitReceiverKind() == ExplicitReceiverKind.BOTH_RECEIVERS || matchReceivers(rc1.getDispatchReceiver(), rc2.getDispatchReceiver())) } rc1.getExplicitReceiverKind() == ExplicitReceiverKind.NO_EXPLICIT_RECEIVER -> checkImplicitReceiver(rc1, rc2) @@ -485,8 +485,8 @@ public class JetPsiUnifier( } } - if (!matchReceiverParameters(desc1.getReceiverParameter(), desc2.getReceiverParameter())) return UNMATCHED - if (!matchReceiverParameters(desc1.getExpectedThisObject(), desc2.getExpectedThisObject())) return UNMATCHED + if (!matchReceiverParameters(desc1.getExtensionReceiverParameter(), desc2.getExtensionReceiverParameter())) return UNMATCHED + if (!matchReceiverParameters(desc1.getDispatchReceiverParameter(), desc2.getDispatchReceiverParameter())) return UNMATCHED val params1 = desc1.getValueParameters() val params2 = desc2.getValueParameters() diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/InvokeConventionTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/InvokeConventionTest.java index 0965a0ee38f..7a8b930a537 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/InvokeConventionTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/InvokeConventionTest.java @@ -42,15 +42,15 @@ public final class InvokeConventionTest extends AbstractExpressionTest { fooBoxTest(); } - public void testInvokeWithReceiverArgument() throws Exception { + public void testInvokeWithExtensionReceiver() throws Exception { fooBoxTest(); } - public void testInvokeWithThisObject() throws Exception { + public void testInvokeWithDispatchReceiver() throws Exception { fooBoxTest(); } - public void testInvokeWithThisObjectAndReceiver() throws Exception { + public void testInvokeWithDispatchAndExtensionReceivers() throws Exception { fooBoxTest(); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfo.kt b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfo.kt index 155ec4ec01a..8ae9b5231b7 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfo.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfo.kt @@ -45,15 +45,15 @@ trait CallInfo { val context: TranslationContext val resolvedCall: ResolvedCall - val thisObject: JsExpression? - val receiverObject: JsExpression? + val dispatchReceiver: JsExpression? + val extensionReceiver: JsExpression? fun constructSafeCallIsNeeded(result: JsExpression): JsExpression override fun toString(): String { val location = DiagnosticUtils.atLocation(callableDescriptor) val name = callableDescriptor.getName().asString() - return "callableDescriptor: $name at $location; thisObject: $thisObject; receiverObject: $receiverObject" + return "callableDescriptor: $name at $location; dispatchReceiver: $dispatchReceiver; extensionReceiver: $extensionReceiver" } } @@ -63,40 +63,40 @@ class VariableAccessInfo(callInfo: CallInfo, val value: JsExpression? = null) : class FunctionCallInfo(callInfo: CallInfo, val argumentsInfo: CallArgumentTranslator.ArgumentsInfo) : CallInfo by callInfo /** - * no receivers - thisObjectOrReceiverObject = null, receiverObject = null - * this - thisObjectOrReceiverObject = this, receiverObject = null - * receiver - thisObjectOrReceiverObject = receiver, receiverObject = null - * both - thisObjectOrReceiverObject = this, receiverObject = receiver + * no receivers - extensionOrDispatchReceiver = null, extensionReceiver = null + * this - extensionOrDispatchReceiver = this, extensionReceiver = null + * receiver - extensionOrDispatchReceiver = receiver, extensionReceiver = null + * both - extensionOrDispatchReceiver = this, extensionReceiver = receiver */ -class ExplicitReceivers(val receiverOrThisObject: JsExpression?, val receiverObject: JsExpression? = null) +class ExplicitReceivers(val extensionOrDispatchReceiver: JsExpression?, val extensionReceiver: JsExpression? = null) -fun TranslationContext.getCallInfo(resolvedCall: ResolvedCall, receiverOrThisObject: JsExpression?): CallInfo { - return createCallInfo(resolvedCall, ExplicitReceivers(receiverOrThisObject)) +fun TranslationContext.getCallInfo(resolvedCall: ResolvedCall, extensionOrDispatchReceiver: JsExpression?): CallInfo { + return createCallInfo(resolvedCall, ExplicitReceivers(extensionOrDispatchReceiver)) } -fun TranslationContext.getCallInfo(resolvedCall: ResolvedCall, receiverOrThisObject: JsExpression?): FunctionCallInfo { - return getCallInfo(resolvedCall, ExplicitReceivers(receiverOrThisObject)); +fun TranslationContext.getCallInfo(resolvedCall: ResolvedCall, extensionOrDispatchReceiver: JsExpression?): FunctionCallInfo { + return getCallInfo(resolvedCall, ExplicitReceivers(extensionOrDispatchReceiver)); } // two receiver need only for FunctionCall in VariableAsFunctionResolvedCall fun TranslationContext.getCallInfo(resolvedCall: ResolvedCall, explicitReceivers: ExplicitReceivers): FunctionCallInfo { val argsBlock = JsBlock() - val argumentsInfo = CallArgumentTranslator.translate(resolvedCall, explicitReceivers.receiverOrThisObject, this, argsBlock) + val argumentsInfo = CallArgumentTranslator.translate(resolvedCall, explicitReceivers.extensionOrDispatchReceiver, this, argsBlock) val explicitReceiversCorrected = - if (!argsBlock.isEmpty() && explicitReceivers.receiverOrThisObject != null) { + if (!argsBlock.isEmpty() && explicitReceivers.extensionOrDispatchReceiver != null) { val receiverOrThisRef = - if (TranslationUtils.isCacheNeeded(explicitReceivers.receiverOrThisObject)) { - val receiverOrThisRefVar = this.declareTemporary(explicitReceivers.receiverOrThisObject) + if (TranslationUtils.isCacheNeeded(explicitReceivers.extensionOrDispatchReceiver)) { + val receiverOrThisRefVar = this.declareTemporary(explicitReceivers.extensionOrDispatchReceiver) this.addStatementToCurrentBlock(receiverOrThisRefVar.assignmentExpression().makeStmt()) receiverOrThisRefVar.reference() } else { - explicitReceivers.receiverOrThisObject + explicitReceivers.extensionOrDispatchReceiver } - var receiverRef = explicitReceivers.receiverObject + var receiverRef = explicitReceivers.extensionReceiver if (receiverRef != null) { receiverRef = this.declareTemporary(null).reference() - this.addStatementToCurrentBlock(JsAstUtils.assignment(receiverRef!!, explicitReceivers.receiverObject!!).makeStmt()) + this.addStatementToCurrentBlock(JsAstUtils.assignment(receiverRef!!, explicitReceivers.extensionReceiver!!).makeStmt()) } ExplicitReceivers(receiverOrThisRef, receiverRef) } @@ -108,58 +108,58 @@ fun TranslationContext.getCallInfo(resolvedCall: ResolvedCall, explicitReceivers: ExplicitReceivers): CallInfo { val receiverKind = resolvedCall.getExplicitReceiverKind() - fun getThisObject(): JsExpression? { - val receiverValue = resolvedCall.getThisObject() + fun getDispatchReceiver(): JsExpression? { + val receiverValue = resolvedCall.getDispatchReceiver() if (!receiverValue.exists()) { return null } return when (receiverKind) { - THIS_OBJECT, BOTH_RECEIVERS -> explicitReceivers.receiverOrThisObject - else -> this.getThisObject(receiverValue) + DISPATCH_RECEIVER, BOTH_RECEIVERS -> explicitReceivers.extensionOrDispatchReceiver + else -> this.getDispatchReceiver(receiverValue) } } - fun getReceiverObject(): JsExpression? { - val receiverValue = resolvedCall.getReceiverArgument() + fun getExtensionReceiver(): JsExpression? { + val receiverValue = resolvedCall.getExtensionReceiver() if (!receiverValue.exists()) { return null } return when (receiverKind) { - RECEIVER_ARGUMENT -> explicitReceivers.receiverOrThisObject - BOTH_RECEIVERS -> explicitReceivers.receiverObject - else -> this.getThisObject(receiverValue) + EXTENSION_RECEIVER -> explicitReceivers.extensionOrDispatchReceiver + BOTH_RECEIVERS -> explicitReceivers.extensionReceiver + else -> this.getDispatchReceiver(receiverValue) } } - var thisObject = getThisObject() - var receiverObject = getReceiverObject() + var dispatchReceiver = getDispatchReceiver() + var extensionReceiver = getExtensionReceiver() var notNullConditional: JsConditional? = null if (resolvedCall.isSafeCall()) { when (resolvedCall.getExplicitReceiverKind()) { - BOTH_RECEIVERS, RECEIVER_ARGUMENT -> { - notNullConditional = TranslationUtils.notNullConditional(receiverObject!!, JsLiteral.NULL, this) - receiverObject = notNullConditional!!.getThenExpression() + BOTH_RECEIVERS, EXTENSION_RECEIVER -> { + notNullConditional = TranslationUtils.notNullConditional(extensionReceiver!!, JsLiteral.NULL, this) + extensionReceiver = notNullConditional!!.getThenExpression() } else -> { - notNullConditional = TranslationUtils.notNullConditional(thisObject!!, JsLiteral.NULL, this) - thisObject = notNullConditional!!.getThenExpression() + notNullConditional = TranslationUtils.notNullConditional(dispatchReceiver!!, JsLiteral.NULL, this) + dispatchReceiver = notNullConditional!!.getThenExpression() } } } return object : CallInfo { override val context: TranslationContext = this@createCallInfo override val resolvedCall: ResolvedCall = resolvedCall - override val thisObject: JsExpression? = thisObject - override val receiverObject: JsExpression? = receiverObject + override val dispatchReceiver: JsExpression? = dispatchReceiver + override val extensionReceiver: JsExpression? = extensionReceiver val notNullConditionalForSafeCall: JsConditional? = notNullConditional diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfoExtensions.kt b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfoExtensions.kt index 1d437f7bbcb..19295010ef9 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfoExtensions.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallInfoExtensions.kt @@ -50,15 +50,15 @@ import org.jetbrains.k2js.translate.context.TranslationContext val CallInfo.callableDescriptor: CallableDescriptor get() = resolvedCall.getResultingDescriptor().getOriginal() -fun CallInfo.isExtension(): Boolean = receiverObject != null +fun CallInfo.isExtension(): Boolean = extensionReceiver != null -fun CallInfo.isMemberCall(): Boolean = thisObject != null +fun CallInfo.isMemberCall(): Boolean = dispatchReceiver != null fun CallInfo.isNative(): Boolean = AnnotationsUtils.isNativeObject(callableDescriptor) fun CallInfo.isSuperInvocation(): Boolean { - val thisObject = resolvedCall.getThisObject() - return thisObject is ExpressionReceiver && ((thisObject as ExpressionReceiver)).getExpression() is JetSuperExpression + val dispatchReceiver = resolvedCall.getDispatchReceiver() + return dispatchReceiver is ExpressionReceiver && ((dispatchReceiver as ExpressionReceiver)).getExpression() is JetSuperExpression } val VariableAccessInfo.variableDescriptor: VariableDescriptor diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallTranslator.kt b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallTranslator.kt index 4b0f755191d..2e3cfbbe456 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallTranslator.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/CallTranslator.kt @@ -36,39 +36,39 @@ import kotlin.test.assertNotNull object CallTranslator { fun translate(context: TranslationContext, resolvedCall: ResolvedCall, - receiverOrThisObject: JsExpression? = null + extensionOrDispatchReceiver: JsExpression? = null ): JsExpression { - return translateCall(context, resolvedCall, ExplicitReceivers(receiverOrThisObject)) + return translateCall(context, resolvedCall, ExplicitReceivers(extensionOrDispatchReceiver)) } fun translateGet(context: TranslationContext, resolvedCall: ResolvedCall, - receiverOrThisObject: JsExpression? = null + extensionOrDispatchReceiver: JsExpression? = null ): JsExpression { - val variableAccessInfo = VariableAccessInfo(context.getCallInfo(resolvedCall, receiverOrThisObject), null); + val variableAccessInfo = VariableAccessInfo(context.getCallInfo(resolvedCall, extensionOrDispatchReceiver), null); return variableAccessInfo.translateVariableAccess() } fun translateSet(context: TranslationContext, resolvedCall: ResolvedCall, value: JsExpression, - receiverOrThisObject: JsExpression? = null + extensionOrDispatchReceiver: JsExpression? = null ): JsExpression { - val variableAccessInfo = VariableAccessInfo(context.getCallInfo(resolvedCall, receiverOrThisObject), value); + val variableAccessInfo = VariableAccessInfo(context.getCallInfo(resolvedCall, extensionOrDispatchReceiver), value); return variableAccessInfo.translateVariableAccess() } fun buildCall(context: TranslationContext, functionDescriptor: FunctionDescriptor, args: List, - thisObject: JsExpression? + dispatchReceiver: JsExpression? ): JsExpression { val argumentsInfo = CallArgumentTranslator.ArgumentsInfo(args, false, null); val functionName = context.getNameForDescriptor(functionDescriptor) val isNative = AnnotationsUtils.isNativeObject(functionDescriptor) val hasSpreadOperator = false - if (thisObject != null) { - return DefaultFunctionCallCase.buildDefaultCallWithThisObject(argumentsInfo, thisObject, functionName, isNative, hasSpreadOperator) + if (dispatchReceiver != null) { + return DefaultFunctionCallCase.buildDefaultCallWithDispatchReceiver(argumentsInfo, dispatchReceiver, functionName, isNative, hasSpreadOperator) } else { return DefaultFunctionCallCase.buildDefaultCallWithoutReceiver(context, argumentsInfo, functionDescriptor, functionName, isNative, hasSpreadOperator) } @@ -84,17 +84,17 @@ private fun translateCall(context: TranslationContext, explicitReceivers: ExplicitReceivers ): JsExpression { if (resolvedCall is VariableAsFunctionResolvedCall) { - assert(explicitReceivers.receiverObject == null, "VariableAsFunctionResolvedCall must have one receiver") + assert(explicitReceivers.extensionReceiver == null, "VariableAsFunctionResolvedCall must have one receiver") val variableCall = resolvedCall.variableCall if (variableCall.expectedReceivers()) { - val newReceiver = CallTranslator.translateGet(context, variableCall, explicitReceivers.receiverOrThisObject) + val newReceiver = CallTranslator.translateGet(context, variableCall, explicitReceivers.extensionOrDispatchReceiver) return translateFunctionCall(context, resolvedCall.functionCall, ExplicitReceivers(newReceiver)) } else { - val thisObject = CallTranslator.translateGet(context, variableCall, null) - if (explicitReceivers.receiverOrThisObject == null) - return translateFunctionCall(context, resolvedCall.functionCall, ExplicitReceivers(thisObject)) + val dispatchReceiver = CallTranslator.translateGet(context, variableCall, null) + if (explicitReceivers.extensionOrDispatchReceiver == null) + return translateFunctionCall(context, resolvedCall.functionCall, ExplicitReceivers(dispatchReceiver)) else - return translateFunctionCall(context, resolvedCall.functionCall, ExplicitReceivers(thisObject, explicitReceivers.receiverOrThisObject)) + return translateFunctionCall(context, resolvedCall.functionCall, ExplicitReceivers(dispatchReceiver, explicitReceivers.extensionOrDispatchReceiver)) } } @@ -120,28 +120,28 @@ fun computeExplicitReceiversForInvoke( explicitReceivers: ExplicitReceivers ): ExplicitReceivers { val callElement = resolvedCall.getCall().getCallElement() - assert(explicitReceivers.receiverObject == null, "'Invoke' call must have one receiver: $callElement") + assert(explicitReceivers.extensionReceiver == null, "'Invoke' call must have one receiver: $callElement") fun translateReceiverAsExpression(receiver: ReceiverValue): JsExpression? = (receiver as? ExpressionReceiver)?.let { Translation.translateAsExpression(it.getExpression(), context) } - val thisObject = resolvedCall.getThisObject() - val receiverArgument = resolvedCall.getReceiverArgument() + val dispatchReceiver = resolvedCall.getDispatchReceiver() + val extensionReceiver = resolvedCall.getExtensionReceiver() - if (thisObject.exists() && receiverArgument.exists()) { - assertNotNull(explicitReceivers.receiverOrThisObject, "No explicit receiver for 'invoke' resolved call with both receivers: $callElement") + if (dispatchReceiver.exists() && extensionReceiver.exists()) { + assertNotNull(explicitReceivers.extensionOrDispatchReceiver, "No explicit receiver for 'invoke' resolved call with both receivers: $callElement") } else { - assert(explicitReceivers.receiverOrThisObject == null, - "Non trivial explicit receiver ${explicitReceivers.receiverOrThisObject}\n for 'invoke' resolved call: $callElement\n" - + "This object: $thisObject Receiver argument: $receiverArgument") + assert(explicitReceivers.extensionOrDispatchReceiver == null, + "Non trivial explicit receiver ${explicitReceivers.extensionOrDispatchReceiver}\n for 'invoke' resolved call: $callElement\n" + + "Dispatch receiver: $dispatchReceiver Extension receiver: $extensionReceiver") } - val thisObjectExpression = translateReceiverAsExpression(thisObject) - return when (Pair(thisObject.exists(), receiverArgument.exists())) { - Pair(true, true) -> ExplicitReceivers(thisObjectExpression, explicitReceivers.receiverOrThisObject) - Pair(true, false) -> ExplicitReceivers(thisObjectExpression) - Pair(false, true) -> ExplicitReceivers(translateReceiverAsExpression(receiverArgument)) + val dispatchReceiverExpression = translateReceiverAsExpression(dispatchReceiver) + return when (Pair(dispatchReceiver.exists(), extensionReceiver.exists())) { + 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") } } @@ -152,21 +152,21 @@ trait CallCase { protected fun I.noReceivers(): JsExpression = unsupported() - protected fun I.thisObject(): JsExpression = unsupported() + protected fun I.dispatchReceiver(): JsExpression = unsupported() - protected fun I.receiverArgument(): JsExpression = unsupported() + protected fun I.extensionReceiver(): JsExpression = unsupported() protected fun I.bothReceivers(): JsExpression = unsupported() final fun translate(callInfo: I): JsExpression { - val result = if (callInfo.thisObject == null) { - if (callInfo.receiverObject == null) + val result = if (callInfo.dispatchReceiver == null) { + if (callInfo.extensionReceiver == null) callInfo.noReceivers() else - callInfo.receiverArgument() + callInfo.extensionReceiver() } else { - if (callInfo.receiverObject == null) { - callInfo.thisObject() + if (callInfo.extensionReceiver == null) { + callInfo.dispatchReceiver() } else callInfo.bothReceivers() } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/FunctionCallCases.kt b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/FunctionCallCases.kt index 91d85762765..8616620ad42 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/FunctionCallCases.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/callTranslator/FunctionCallCases.kt @@ -51,21 +51,21 @@ public fun addReceiverToArgs(receiver: JsExpression, arguments: List { } object SuperPropertyAccessCase : VariableAccessCase { - override fun VariableAccessInfo.thisObject(): JsExpression { + override fun VariableAccessInfo.dispatchReceiver(): JsExpression { val variableName = context.program().getStringLiteral(this.variableName.getIdent()) return if (isGetAccess()) - JsInvocation(context.namer().getCallGetProperty(), JsLiteral.THIS, thisObject!!, variableName) + JsInvocation(context.namer().getCallGetProperty(), JsLiteral.THIS, dispatchReceiver!!, variableName) else - JsInvocation(context.namer().getCallSetProperty(), JsLiteral.THIS, thisObject!!, variableName, value!!) + JsInvocation(context.namer().getCallSetProperty(), JsLiteral.THIS, dispatchReceiver!!, variableName, value!!) } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java b/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java index 5cb77518d86..1e69c04247e 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java @@ -307,7 +307,7 @@ public class TranslationContext { } @NotNull - public JsExpression getThisObject(@NotNull ReceiverParameterDescriptor descriptor) { + public JsExpression getDispatchReceiver(@NotNull ReceiverParameterDescriptor descriptor) { JsExpression alias = getAliasForDescriptor(descriptor); return alias == null ? JsLiteral.THIS : alias; } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java index 5e6432cf84a..897c88c548a 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java @@ -409,7 +409,7 @@ public final class ExpressionVisitor extends TranslatorVisitor { getDescriptorForReferenceExpression(context.bindingContext(), expression.getInstanceReference()); assert thisExpression != null : "This expression must reference a descriptor: " + expression.getText(); - return context.getThisObject(getReceiverParameterForDeclaration(thisExpression)).source(expression); + return context.getDispatchReceiver(getReceiverParameterForDeclaration(thisExpression)).source(expression); } @Override diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java index 3b4952bb9a8..cf5e483262e 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java @@ -78,7 +78,7 @@ public final class FunctionTranslator extends AbstractTranslator { private TranslationContext getFunctionBodyContext() { AliasingContext aliasingContext; if (isExtensionFunction()) { - DeclarationDescriptor expectedReceiverDescriptor = descriptor.getReceiverParameter(); + DeclarationDescriptor expectedReceiverDescriptor = descriptor.getExtensionReceiverParameter(); assert expectedReceiverDescriptor != null; extensionFunctionReceiverName = functionObject.getScope().declareName(Namer.getReceiverParameterName()); //noinspection ConstantConditions diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/FunctionIntrinsic.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/FunctionIntrinsic.java index 541ecdb62a1..116465046ab 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/FunctionIntrinsic.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/FunctionIntrinsic.java @@ -47,10 +47,10 @@ public abstract class FunctionIntrinsic { @Nullable protected static JsExpression getThisOrReceiverOrNull(@NotNull CallInfo callInfo) { - if (callInfo.getThisObject() != null) { - return callInfo.getThisObject(); + if (callInfo.getDispatchReceiver() != null) { + return callInfo.getDispatchReceiver(); } else { - return callInfo.getReceiverObject(); + return callInfo.getExtensionReceiver(); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java index aa0aa7ca17e..a9868d51d5e 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java @@ -92,7 +92,7 @@ public final class TopLevelFIF extends CompositeFIF { @Nullable @Override protected ExpressionReceiver getExpressionReceiver(@NotNull ResolvedCall resolvedCall) { - ReceiverValue result = resolvedCall.getThisObject(); + ReceiverValue result = resolvedCall.getDispatchReceiver(); return result instanceof ExpressionReceiver ? (ExpressionReceiver) result : null; } @@ -116,7 +116,7 @@ public final class TopLevelFIF extends CompositeFIF { @Nullable @Override protected ExpressionReceiver getExpressionReceiver(@NotNull ResolvedCall resolvedCall) { - ReceiverValue result = resolvedCall.getReceiverArgument(); + ReceiverValue result = resolvedCall.getExtensionReceiver(); return result instanceof ExpressionReceiver ? (ExpressionReceiver) result : null; } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/patterns/PatternBuilder.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/patterns/PatternBuilder.java index eab0d3b8e9d..f7dc0c9947a 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/patterns/PatternBuilder.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/patterns/PatternBuilder.java @@ -237,7 +237,7 @@ public final class PatternBuilder { public boolean apply(@Nullable FunctionDescriptor functionDescriptor) { assert functionDescriptor != null : "argument for DescriptorPredicate.apply should not be null, receiverFqName=" + receiverFqName + " names=" + Arrays.asList(names); - ReceiverParameterDescriptor actualReceiver = functionDescriptor.getReceiverParameter(); + ReceiverParameterDescriptor actualReceiver = functionDescriptor.getExtensionReceiverParameter(); if (actualReceiver != null) { if (receiverFqName == null) return false; diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallableReferenceTranslator.kt b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallableReferenceTranslator.kt index 0c70143ed08..34a82bc855c 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallableReferenceTranslator.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallableReferenceTranslator.kt @@ -129,7 +129,7 @@ object CallableReferenceTranslator { } private fun translateForExtensionFunction(descriptor: FunctionDescriptor, context: TranslationContext): JsExpression { - val receiverParameterDescriptor = descriptor.getReceiverParameter() + val receiverParameterDescriptor = descriptor.getExtensionReceiverParameter() assert(receiverParameterDescriptor != null, "receiverParameter for extension should not be null") val jsFunctionRef = ReferenceTranslator.translateAsFQReference(descriptor, context) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/InlinedCallExpressionTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/InlinedCallExpressionTranslator.java index b6b2665ca18..a63126daea5 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/InlinedCallExpressionTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/InlinedCallExpressionTranslator.java @@ -120,15 +120,15 @@ public final class InlinedCallExpressionTranslator extends AbstractCallExpressio TranslationContext contextWithAliasForThisExpression = contextForInlining; SimpleFunctionDescriptor functionDescriptor = getFunctionDescriptor(); CallInfo callInfo = CallTranslatorPackage.getCallInfo(contextForInlining, resolvedCall, receiver); - JsExpression receiver = callInfo.getReceiverObject(); + JsExpression receiver = callInfo.getExtensionReceiver(); if (receiver != null) { contextWithAliasForThisExpression = - contextWithAlias(contextWithAliasForThisExpression, receiver, functionDescriptor.getReceiverParameter()); + contextWithAlias(contextWithAliasForThisExpression, receiver, functionDescriptor.getExtensionReceiverParameter()); } - JsExpression thisObject = callInfo.getThisObject(); - if (thisObject != null) { + JsExpression dispatchReceiver = callInfo.getDispatchReceiver(); + if (dispatchReceiver != null) { contextWithAliasForThisExpression = - contextWithAlias(contextWithAliasForThisExpression, thisObject, functionDescriptor.getExpectedThisObject()); + contextWithAlias(contextWithAliasForThisExpression, dispatchReceiver, functionDescriptor.getDispatchReceiverParameter()); } return contextWithAliasForThisExpression; } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java index 6f76cdd06a6..f0f633af980 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java @@ -98,7 +98,7 @@ public final class JsDescriptorUtils { } public static boolean isExtension(@NotNull CallableDescriptor functionDescriptor) { - return (functionDescriptor.getReceiverParameter() != null); + return (functionDescriptor.getExtensionReceiverParameter() != null); } public static boolean isOverride(@NotNull CallableMemberDescriptor descriptor) { @@ -127,7 +127,7 @@ public final class JsDescriptorUtils { return ((ClassDescriptor) declarationDescriptor).getThisAsReceiverParameter(); } else if (declarationDescriptor instanceof CallableMemberDescriptor) { - ReceiverParameterDescriptor receiverDescriptor = ((CallableMemberDescriptor) declarationDescriptor).getReceiverParameter(); + ReceiverParameterDescriptor receiverDescriptor = ((CallableMemberDescriptor) declarationDescriptor).getExtensionReceiverParameter(); assert receiverDescriptor != null; return receiverDescriptor; } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java index df1049fb5f8..ed96aa46b53 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java @@ -280,7 +280,7 @@ public final class TranslationUtils { private static String getArgumentTypesAsString(FunctionDescriptor descriptor) { StringBuilder argTypes = new StringBuilder(); - ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); + ReceiverParameterDescriptor receiverParameter = descriptor.getExtensionReceiverParameter(); if (receiverParameter != null) { argTypes.append(getJetTypeFqName(receiverParameter.getType())).append("."); } @@ -492,7 +492,7 @@ public final class TranslationUtils { } private static int arity(FunctionDescriptor descriptor) { - return descriptor.getValueParameters().size() + (descriptor.getReceiverParameter() == null ? 0 : 1); + return descriptor.getValueParameters().size() + (descriptor.getExtensionReceiverParameter() == null ? 0 : 1); } private static boolean isNativeOrOverrideNative(FunctionDescriptor descriptor) { diff --git a/js/js.translator/testData/expression/invoke/cases/invokeWithThisObjectAndReceiver.kt b/js/js.translator/testData/expression/invoke/cases/invokeWithDispatchAndExtensionReceivers.kt similarity index 100% rename from js/js.translator/testData/expression/invoke/cases/invokeWithThisObjectAndReceiver.kt rename to js/js.translator/testData/expression/invoke/cases/invokeWithDispatchAndExtensionReceivers.kt diff --git a/js/js.translator/testData/expression/invoke/cases/invokeWithThisObject.kt b/js/js.translator/testData/expression/invoke/cases/invokeWithDispatchReceiver.kt similarity index 100% rename from js/js.translator/testData/expression/invoke/cases/invokeWithThisObject.kt rename to js/js.translator/testData/expression/invoke/cases/invokeWithDispatchReceiver.kt diff --git a/js/js.translator/testData/expression/invoke/cases/invokeWithReceiverArgument.kt b/js/js.translator/testData/expression/invoke/cases/invokeWithExtensionReceiver.kt similarity index 100% rename from js/js.translator/testData/expression/invoke/cases/invokeWithReceiverArgument.kt rename to js/js.translator/testData/expression/invoke/cases/invokeWithExtensionReceiver.kt diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt index 82fbba5b2d6..7c5f0e5bffd 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt @@ -357,7 +357,7 @@ class KModel(val context: BindingContext, val config: KDocConfig, val sourceDirs val name = descriptor.getName().asString() val returnType = getType(descriptor.getReturnType()) if (returnType != null) { - val receiver = descriptor.getReceiverParameter() + val receiver = descriptor.getExtensionReceiverParameter() val extensionClass = if (receiver != null) { getType(receiver.getType()) } else null @@ -394,7 +394,7 @@ class KModel(val context: BindingContext, val config: KDocConfig, val sourceDirs val function = KFunction(descriptor, owner, name, returnType, parameters) addTypeParameters(function.typeParameters, descriptor.getTypeParameters()) configureComments(function, descriptor) - val receiver = descriptor.getReceiverParameter() + val receiver = descriptor.getExtensionReceiverParameter() if (receiver != null) { val receiverType = getType(receiver.getType()) function.receiverType = receiverType