Migrating descriptors onto ReceiverParameterDescriptor

This commit is contained in:
Andrey Breslav
2012-10-30 11:28:13 +04:00
parent 5609850d1d
commit bc592cb5cd
53 changed files with 210 additions and 218 deletions
@@ -19,10 +19,11 @@ package org.jetbrains.jet.codegen;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import java.util.Collections;
import static org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER;
/**
* @author alex.tkachman
*/
@@ -35,7 +36,7 @@ public class AccessorForFunctionDescriptor extends SimpleFunctionDescriptorImpl
FunctionDescriptor fd = (FunctionDescriptor) descriptor;
initialize(fd.getReceiverParameter().exists() ? fd.getReceiverParameter().getType() : null,
descriptor instanceof ConstructorDescriptor ? ReceiverDescriptor.NO_RECEIVER : fd.getExpectedThisObject(),
descriptor instanceof ConstructorDescriptor ? NO_RECEIVER_PARAMETER : fd.getExpectedThisObject(),
Collections.<TypeParameterDescriptor>emptyList(),
fd.getValueParameters(),
fd.getReturnType(),
@@ -42,7 +42,6 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import org.jetbrains.jet.lang.types.JetType;
import java.util.ArrayList;
@@ -174,7 +173,7 @@ public class ClosureCodegen extends GenerationStateAware {
iv.load(0, Type.getObjectType(className));
final ReceiverDescriptor receiver = funDescriptor.getReceiverParameter();
final ReceiverParameterDescriptor receiver = funDescriptor.getReceiverParameter();
int count = 1;
if (receiver.exists()) {
StackValue.local(count, OBJECT_TYPE).put(OBJECT_TYPE, iv);
@@ -46,7 +46,6 @@ import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
import org.jetbrains.jet.lang.resolve.java.kt.DescriptorKindUtils;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import java.util.*;
@@ -147,7 +146,7 @@ public class FunctionCodegen extends GenerationStateAware {
MethodBounds methodBounds = generateMethodBody(mv, fun, functionDescriptor, context, asmMethod, localVariablesInfo);
Type thisType;
ReceiverDescriptor expectedThisObject = functionDescriptor.getExpectedThisObject();
ReceiverParameterDescriptor expectedThisObject = functionDescriptor.getExpectedThisObject();
if (expectedThisObject.exists()) {
thisType = typeMapper.mapType(expectedThisObject.getType());
}
@@ -396,7 +395,7 @@ public class FunctionCodegen extends GenerationStateAware {
List<ValueParameterDescriptor> paramDescrs = functionDescriptor.getValueParameters();
Modality modality = functionDescriptor.getModality();
ReceiverDescriptor receiverParameter = functionDescriptor.getReceiverParameter();
ReceiverParameterDescriptor receiverParameter = functionDescriptor.getReceiverParameter();
int start = 0;
if (functionDescriptor instanceof PropertyAccessorDescriptor) {
@@ -546,7 +545,7 @@ public class FunctionCodegen extends GenerationStateAware {
return;
}
ReceiverDescriptor receiverParameter = functionDescriptor.getReceiverParameter();
ReceiverParameterDescriptor receiverParameter = functionDescriptor.getReceiverParameter();
boolean hasReceiver = receiverParameter.exists();
boolean isStatic = isStatic(kind);
@@ -592,7 +591,7 @@ public class FunctionCodegen extends GenerationStateAware {
Method jvmSignature,
FunctionDescriptor functionDescriptor,
OwnerKind kind,
ReceiverDescriptor receiverParameter,
ReceiverParameterDescriptor receiverParameter,
boolean hasReceiver,
boolean aStatic,
JvmClassName ownerInternalName,
@@ -1331,7 +1331,7 @@ public abstract class StackValue {
private void genReceiver(
InstructionAdapter v, ReceiverDescriptor receiverArgument, Type type,
@Nullable ReceiverDescriptor receiverParameter, int depth
@Nullable ReceiverParameterDescriptor receiverParameter, int depth
) {
if (receiver == StackValue.none()) {
if (receiverParameter != null) {
@@ -35,7 +35,6 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.*;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
@@ -500,7 +499,7 @@ public class JetTypeMapper extends BindingTraceAware {
writeFormalTypeParameters(f.getTypeParameters(), signatureVisitor);
final ReceiverDescriptor receiverTypeRef = f.getReceiverParameter();
final ReceiverParameterDescriptor receiverTypeRef = f.getReceiverParameter();
final JetType receiverType = !receiverTypeRef.exists() ? null : receiverTypeRef.getType();
final List<ValueParameterDescriptor> parameters = f.getValueParameters();
@@ -611,7 +610,7 @@ public class JetTypeMapper extends BindingTraceAware {
}
public JvmMethodSignature mapSignature(Name name, FunctionDescriptor f) {
final ReceiverDescriptor receiver = f.getReceiverParameter();
final ReceiverParameterDescriptor receiver = f.getReceiverParameter();
BothSignatureWriter signatureWriter = new BothSignatureWriter(BothSignatureWriter.Mode.METHOD, false);
@@ -638,7 +637,7 @@ public class JetTypeMapper extends BindingTraceAware {
return signatureWriter.makeJvmMethodSignature(name.getName());
}
private void writeReceiverIfNeeded(ReceiverDescriptor receiver, BothSignatureWriter signatureWriter) {
private void writeReceiverIfNeeded(ReceiverParameterDescriptor receiver, BothSignatureWriter signatureWriter) {
if (receiver.exists()) {
signatureWriter.writeParameterType(JvmMethodParameterKind.RECEIVER);
mapType(receiver.getType(), signatureWriter, JetTypeMapperMode.VALUE);