Minor, use ResolvedCall#getSuperCallExpression in codegen
This commit is contained in:
@@ -2005,15 +2005,15 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
|||||||
|
|
||||||
boolean directToField =
|
boolean directToField =
|
||||||
expression.getReferencedNameElementType() == JetTokens.FIELD_IDENTIFIER && contextKind() != OwnerKind.TRAIT_IMPL;
|
expression.getReferencedNameElementType() == JetTokens.FIELD_IDENTIFIER && contextKind() != OwnerKind.TRAIT_IMPL;
|
||||||
JetExpression r = getReceiverForSelector(expression);
|
JetSuperExpression superExpression =
|
||||||
boolean isSuper = r instanceof JetSuperExpression;
|
resolvedCall == null ? null : CallResolverUtilPackage.getSuperCallExpression(resolvedCall.getCall());
|
||||||
propertyDescriptor = context.accessibleDescriptor(propertyDescriptor);
|
propertyDescriptor = context.accessibleDescriptor(propertyDescriptor);
|
||||||
|
|
||||||
if (directToField) {
|
if (directToField) {
|
||||||
receiver = StackValue.receiverWithoutReceiverArgument(receiver);
|
receiver = StackValue.receiverWithoutReceiverArgument(receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
return intermediateValueForProperty(propertyDescriptor, directToField, isSuper ? (JetSuperExpression) r : null, receiver);
|
return intermediateValueForProperty(propertyDescriptor, directToField, superExpression, receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (descriptor instanceof ClassDescriptor) {
|
if (descriptor instanceof ClassDescriptor) {
|
||||||
@@ -2555,15 +2555,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private static JetExpression getReceiverForSelector(PsiElement expression) {
|
|
||||||
if (expression.getParent() instanceof JetDotQualifiedExpression && !isReceiver(expression)) {
|
|
||||||
JetDotQualifiedExpression parent = (JetDotQualifiedExpression) expression.getParent();
|
|
||||||
return parent.getReceiverExpression();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private StackValue generateReceiver(@NotNull CallableDescriptor descriptor) {
|
private StackValue generateReceiver(@NotNull CallableDescriptor descriptor) {
|
||||||
return context.generateReceiver(descriptor, state, false);
|
return context.generateReceiver(descriptor, state, false);
|
||||||
@@ -2663,15 +2654,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static boolean isReceiver(PsiElement expression) {
|
|
||||||
PsiElement parent = expression.getParent();
|
|
||||||
if (parent instanceof JetQualifiedExpression) {
|
|
||||||
JetExpression receiverExpression = ((JetQualifiedExpression) parent).getReceiverExpression();
|
|
||||||
return expression == receiverExpression;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void genVarargs(@NotNull VarargValueArgument valueArgument, @NotNull JetType outType) {
|
public void genVarargs(@NotNull VarargValueArgument valueArgument, @NotNull JetType outType) {
|
||||||
Type type = asmType(outType);
|
Type type = asmType(outType);
|
||||||
assert type.getSort() == Type.ARRAY;
|
assert type.getSort() == Type.ARRAY;
|
||||||
|
|||||||
Reference in New Issue
Block a user