Extract and use name-mapping method in JetTypeMapper
It doesn't ever make sense to create JVM method signatures with names that come directly from descriptors; we need to map some of them (<get-?> for property accessors, <anonymous> for local functions/lambdas)
This commit is contained in:
@@ -30,6 +30,7 @@ import org.jetbrains.jet.codegen.signature.JvmMethodParameterKind;
|
|||||||
import org.jetbrains.jet.codegen.signature.JvmMethodParameterSignature;
|
import org.jetbrains.jet.codegen.signature.JvmMethodParameterSignature;
|
||||||
import org.jetbrains.jet.codegen.signature.JvmMethodSignature;
|
import org.jetbrains.jet.codegen.signature.JvmMethodSignature;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.impl.AnonymousFunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||||
@@ -547,13 +548,24 @@ public class JetTypeMapper extends BindingTraceAware {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JvmMethodSignature mapSignature(@NotNull FunctionDescriptor f, boolean needGenericSignature, @NotNull OwnerKind kind) {
|
private static String mapFunctionName(@NotNull FunctionDescriptor descriptor) {
|
||||||
String name = f.getName().asString();
|
if (descriptor instanceof PropertyAccessorDescriptor) {
|
||||||
if (f instanceof PropertyAccessorDescriptor) {
|
return getPropertyAccessorName(((PropertyAccessorDescriptor) descriptor).getCorrespondingProperty(),
|
||||||
boolean isGetter = f instanceof PropertyGetterDescriptor;
|
descriptor instanceof PropertyGetterDescriptor);
|
||||||
name = getPropertyAccessorName(((PropertyAccessorDescriptor) f).getCorrespondingProperty(), isGetter);
|
|
||||||
}
|
}
|
||||||
return mapSignature(name, f, needGenericSignature, kind);
|
else if (isLocalNamedFun(descriptor) ||
|
||||||
|
descriptor instanceof AnonymousFunctionDescriptor ||
|
||||||
|
descriptor instanceof ExpressionAsFunctionDescriptor) {
|
||||||
|
return "invoke";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return descriptor.getName().asString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public JvmMethodSignature mapSignature(@NotNull FunctionDescriptor f, boolean needGenericSignature, @NotNull OwnerKind kind) {
|
||||||
|
return mapSignature(mapFunctionName(f), f, needGenericSignature, kind);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -563,7 +575,7 @@ public class JetTypeMapper extends BindingTraceAware {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JvmMethodSignature mapSignature(@NotNull FunctionDescriptor f) {
|
public JvmMethodSignature mapSignature(@NotNull FunctionDescriptor f) {
|
||||||
return mapSignature(f.getName(), f);
|
return mapSignature(mapFunctionName(f), f, false, OwnerKind.IMPLEMENTATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user