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 CallType callType,
@NotNull TranslationContext context @NotNull TranslationContext context
) { ) {
if (ReferenceTranslator.canBePropertyGetterCall(selector, context)) { if (ReferenceTranslator.canBePropertyAccess(selector, context)) {
assert selector instanceof JetSimpleNameExpression : "Selectors for properties must be simple names."; assert selector instanceof JetSimpleNameExpression : "Selectors for properties must be simple names.";
return new SimpleWrappedVariableAccessTranslator(context, (JetSimpleNameExpression)selector, receiver).translateAsGet(); return new SimpleWrappedVariableAccessTranslator(context, (JetSimpleNameExpression)selector, receiver).translateAsGet();
} }
@@ -84,34 +84,16 @@ public final class ReferenceTranslator {
return ReferenceAccessTranslator.newInstance(referenceExpression, context); return ReferenceAccessTranslator.newInstance(referenceExpression, context);
} }
// TODO: drop this public static boolean canBePropertyAccess(@NotNull JetExpression expression, @NotNull TranslationContext context) {
private static boolean canBePropertyGetterCall(@NotNull JetQualifiedExpression expression, JetSimpleNameExpression simpleNameExpression = null;
@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) {
if (expression instanceof JetQualifiedExpression) { if (expression instanceof JetQualifiedExpression) {
return canBePropertyGetterCall((JetQualifiedExpression) expression, context); simpleNameExpression = getSelectorAsSimpleName((JetQualifiedExpression) expression);
} }
if (expression instanceof JetSimpleNameExpression) { else if (expression instanceof JetSimpleNameExpression) {
return canBePropertyGetterCall((JetSimpleNameExpression) expression, context); simpleNameExpression = (JetSimpleNameExpression) expression;
} }
return false; return simpleNameExpression != null &&
} (getDescriptorForReferenceExpression(context.bindingContext(), simpleNameExpression) instanceof PropertyDescriptor);
public static boolean canBePropertyAccess(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
return canBePropertyGetterCall(expression, context);
} }
} }