NamedFunctionDescriptor
This commit is contained in:
@@ -207,11 +207,11 @@ public abstract class CodegenContext {
|
||||
if(accessor != null)
|
||||
return accessor;
|
||||
|
||||
if(descriptor instanceof FunctionDescriptor) {
|
||||
FunctionDescriptorImpl myAccessor = new FunctionDescriptorImpl(contextType,
|
||||
if(descriptor instanceof NamedFunctionDescriptor) {
|
||||
NamedFunctionDescriptorImpl myAccessor = new NamedFunctionDescriptorImpl(contextType,
|
||||
Collections.<AnnotationDescriptor>emptyList(),
|
||||
descriptor.getName() + "$bridge$" + accessors.size());
|
||||
FunctionDescriptor fd = (FunctionDescriptor) descriptor;
|
||||
FunctionDescriptor fd = (NamedFunctionDescriptor) descriptor;
|
||||
myAccessor.initialize(fd.getReceiverParameter().exists() ? fd.getReceiverParameter().getType() : null,
|
||||
fd.getExpectedThisObject(),
|
||||
fd.getTypeParameters(),
|
||||
|
||||
@@ -85,9 +85,9 @@ public class CodegenUtil {
|
||||
return hasDerivedTypeInfoField(type);
|
||||
}
|
||||
|
||||
public static FunctionDescriptor createInvoke(ExpressionAsFunctionDescriptor fd) {
|
||||
public static NamedFunctionDescriptor createInvoke(ExpressionAsFunctionDescriptor fd) {
|
||||
int arity = fd.getValueParameters().size();
|
||||
FunctionDescriptorImpl invokeDescriptor = new FunctionDescriptorImpl(
|
||||
NamedFunctionDescriptorImpl invokeDescriptor = new NamedFunctionDescriptorImpl(
|
||||
fd.getExpectedThisObject().exists() ? JetStandardClasses.getReceiverFunction(arity) : JetStandardClasses.getFunction(arity),
|
||||
Collections.<AnnotationDescriptor>emptyList(),
|
||||
"invoke");
|
||||
|
||||
@@ -1218,7 +1218,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
|
||||
callableMethod = ClosureCodegen.asCallableMethod((FunctionDescriptor) fd);
|
||||
}
|
||||
else if (fd instanceof ExpressionAsFunctionDescriptor) {
|
||||
FunctionDescriptor invoke = CodegenUtil.createInvoke((ExpressionAsFunctionDescriptor) fd);
|
||||
NamedFunctionDescriptor invoke = CodegenUtil.createInvoke((ExpressionAsFunctionDescriptor) fd);
|
||||
callableMethod = ClosureCodegen.asCallableMethod(invoke);
|
||||
}
|
||||
else if (fd instanceof FunctionDescriptor) {
|
||||
|
||||
@@ -40,7 +40,7 @@ public class FunctionCodegen {
|
||||
}
|
||||
|
||||
public void gen(JetNamedFunction f) {
|
||||
final FunctionDescriptor functionDescriptor = state.getBindingContext().get(BindingContext.FUNCTION, f);
|
||||
final NamedFunctionDescriptor functionDescriptor = state.getBindingContext().get(BindingContext.FUNCTION, f);
|
||||
assert functionDescriptor != null;
|
||||
JvmMethodSignature method = typeMapper.mapToCallableMethod(functionDescriptor, false, owner.getContextKind()).getSignature();
|
||||
generateMethod(f, method, functionDescriptor);
|
||||
|
||||
@@ -445,8 +445,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
|
||||
HashSet<FunctionDescriptor> overridden = new HashSet<FunctionDescriptor>();
|
||||
for (JetDeclaration declaration : myClass.getDeclarations()) {
|
||||
if (declaration instanceof JetFunction) {
|
||||
FunctionDescriptor functionDescriptor = bindingContext.get(BindingContext.FUNCTION, declaration);
|
||||
if (declaration instanceof JetNamedFunction) {
|
||||
NamedFunctionDescriptor functionDescriptor = bindingContext.get(BindingContext.FUNCTION, declaration);
|
||||
assert functionDescriptor != null;
|
||||
overridden.addAll(functionDescriptor.getOverriddenDescriptors());
|
||||
}
|
||||
|
||||
@@ -158,8 +158,8 @@ public class IntrinsicMethods {
|
||||
}
|
||||
);
|
||||
for (DeclarationDescriptor stringMember : stringMembers) {
|
||||
if (stringMember instanceof FunctionDescriptor) {
|
||||
final FunctionDescriptor stringMethod = (FunctionDescriptor) stringMember;
|
||||
if (stringMember instanceof NamedFunctionDescriptor) {
|
||||
final NamedFunctionDescriptor stringMethod = (NamedFunctionDescriptor) stringMember;
|
||||
final PsiMethod[] methods = stringPsiClass != null?
|
||||
stringPsiClass.findMethodsByName(stringMember.getName(), false) : new PsiMethod[]{};
|
||||
for (PsiMethod method : methods) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import org.jetbrains.jet.codegen.CallableMethod;
|
||||
import org.jetbrains.jet.codegen.ExpressionCodegen;
|
||||
import org.jetbrains.jet.codegen.OwnerKind;
|
||||
import org.jetbrains.jet.codegen.StackValue;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamedFunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetCallExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||
import org.objectweb.asm.Type;
|
||||
@@ -18,9 +18,9 @@ import java.util.List;
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public class PsiMethodCall implements IntrinsicMethod {
|
||||
private final FunctionDescriptor myMethod;
|
||||
private final NamedFunctionDescriptor myMethod;
|
||||
|
||||
public PsiMethodCall(FunctionDescriptor method) {
|
||||
public PsiMethodCall(NamedFunctionDescriptor method) {
|
||||
myMethod = method;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user