JS backend: simplify canBePropertyAccess method

This commit is contained in:
Erokhin Stanislav
2013-12-27 17:33:21 +04:00
parent 31668406cd
commit a1edc0368a
2 changed files with 8 additions and 26 deletions
@@ -59,7 +59,7 @@ public final class QualifiedExpressionTranslator {
@NotNull CallType callType,
@NotNull TranslationContext context
) {
if (ReferenceTranslator.canBePropertyGetterCall(selector, context)) {
if (ReferenceTranslator.canBePropertyAccess(selector, context)) {
assert selector instanceof JetSimpleNameExpression : "Selectors for properties must be simple names.";
return new SimpleWrappedVariableAccessTranslator(context, (JetSimpleNameExpression)selector, receiver).translateAsGet();
}
@@ -84,34 +84,16 @@ public final class ReferenceTranslator {
return ReferenceAccessTranslator.newInstance(referenceExpression, context);
}
// TODO: drop this
private static boolean canBePropertyGetterCall(@NotNull JetQualifiedExpression expression,
@NotNull TranslationContext context) {
JetSimpleNameExpression selector = getSelectorAsSimpleName(expression);
assert selector != null : "Only names are allowed after the dot";
return canBePropertyGetterCall(selector, context);
}
private static boolean canBePropertyGetterCall(@NotNull JetSimpleNameExpression expression,
@NotNull TranslationContext context) {
return (getDescriptorForReferenceExpression
(context.bindingContext(), expression) instanceof PropertyDescriptor);
}
public static boolean canBePropertyGetterCall(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
public static boolean canBePropertyAccess(@NotNull JetExpression expression, @NotNull TranslationContext context) {
JetSimpleNameExpression simpleNameExpression = null;
if (expression instanceof JetQualifiedExpression) {
return canBePropertyGetterCall((JetQualifiedExpression) expression, context);
simpleNameExpression = getSelectorAsSimpleName((JetQualifiedExpression) expression);
}
if (expression instanceof JetSimpleNameExpression) {
return canBePropertyGetterCall((JetSimpleNameExpression) expression, context);
else if (expression instanceof JetSimpleNameExpression) {
simpleNameExpression = (JetSimpleNameExpression) expression;
}
return false;
}
public static boolean canBePropertyAccess(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
return canBePropertyGetterCall(expression, context);
return simpleNameExpression != null &&
(getDescriptorForReferenceExpression(context.bindingContext(), simpleNameExpression) instanceof PropertyDescriptor);
}
}